Skip to content

Instantly share code, notes, and snippets.

@llint
Created January 13, 2018 00:26
Show Gist options
  • Save llint/25af2cc4ec2db98e5473e92b9754814d to your computer and use it in GitHub Desktop.
Save llint/25af2cc4ec2db98e5473e92b9754814d to your computer and use it in GitHub Desktop.
/*
* callback -> promise -> async/await
*/
function foo_callback(x)
{
console.log("foo_callback: " + x);
setTimeout(foo_callback, 1000, x + 1);
}
foo_callback(0);
function foo_promise(x)
{
console.log("foo_promise: " + x);
let p = new Promise(resolve => setTimeout(resolve, 1000, x + 1));
p.then(foo_promise);
}
foo_promise(0);
async function foo_async(x)
{
while (true) {
console.log("foo_async: " + x);
let p = new Promise(resolve => setTimeout(resolve, 1000, x + 1));
x = await p;
}
}
foo_async(0);
/*
* async/await -> promise -> callback
*/
async function bar_async()
{
let p = new Promise(resolve => setTimeout(resolve, 1000, 42));
let r = await p;
console.log("bar_async: " + r);
}
bar_async();
function bar_promise()
{
let p = new Promise(resolve => setTimeout(resolve, 1000, 42));
p.then((r) => console.log("bar_promise: " + r));
}
bar_promise();
function bar_callback()
{
setTimeout((r) => console.log("bar_callback: " + r), 1000, 42);
}
bar_callback();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment