Skip to content

Instantly share code, notes, and snippets.

@jinroh
Forked from domenic/await.js
Created April 21, 2013 16:09
Show Gist options
  • Save jinroh/5430111 to your computer and use it in GitHub Desktop.
Save jinroh/5430111 to your computer and use it in GitHub Desktop.
Await and yield
// Let `doAjax`, `fadeIn`, `fadeOut`, and `delay` be promise-returning functions.
// In all the following examples, `example` is meant to return a promise that is fulfilled when
// all operations are completed, or rejected if any of the steps fail.
// ES5
function example() {
return doAjax("data.json").then(function (data) {
document.getElementById("data").innerText = data;
var status = document.getElementById("status");
return fadeIn(status).then(function () {
return delay(2000);
}).then(function () {
return fadeOut(status);
});
});
}
// ES6
const example = Q.async(function* () {
document.getElementById("data").innerText = yield doAjax("data.json");
const status = document.getElementById("status");
yield fadeIn(status);
yield delay(2000);
return fadeOut(status); // not sure this is right? maybe just `yield fadeOut(status); return;`?
});
// ES-some-time-after-6
function^ example() {
document.getElementById("data").innerText = await doAjax("data.json");
const status = document.getElementById("status");
await fadeIn(status);
await delay(2000);
await fadeOut(status);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment