Fluent Async Interface - v1
by Julien Roche
HTML
<ol></ol>
JavaScript 1.7
const olElement = document.querySelector('ol');
function promiseTimeout() {
return new Promise((resolve) => {
setTimeout(resolve, 500 + Math.round(Math.random() * 1000));
});
}
function log(msg) {
const liElement = document.createElement('li');
liElement.textContent = msg;
olElement.appendChild(liElement);
}
class MyApi {
init() {
return promiseTimeout()
.then(() => log('init done'));
}
add(value) {
return promiseTimeout()
.then(() => log(`add done for ${value}`));
}
remove(value) {
return promiseTimeout()
.then(() => log(`remove done for ${value}`));
}
destroy() {
return promiseTimeout()
.then(() => log('destroy done'));
}
}
setTimeout(() => {
const myApi = new MyApi();
myApi
.init()
.then(() => myApi.add(42))
.then(() => myApi.add(55))
.then(() => myApi.remove(42))
.then(() => myApi.destroy())
.catch((err) => alert(`Error: ${err}`))
;
}, 1000);