Skip to content

Instantly share code, notes, and snippets.

@rot26
Created June 24, 2016 23:24
Show Gist options
  • Save rot26/3728bdc869675f51c22cd81053eb6062 to your computer and use it in GitHub Desktop.
Save rot26/3728bdc869675f51c22cd81053eb6062 to your computer and use it in GitHub Desktop.
Playing with Promises
'use strict';
console.log('starting promise.js');
console.time('A');
function asyncFunc() {
return new Promise(
function (resolve, reject) {
console.log(1);
resolve('success value'); // success
console.log(2);
reject('error value'); // failure
});
}
let async1 = asyncFunc()
.then(value => {
/* success */
console.log(3);
console.log('success:',value);
})
.catch(error => {
/* failure */
console.log(4);
console.log('failure:',error);
});
function delay(ms) {
console.log(5);
return new Promise(function (resolve, reject) {
console.log(6);
setTimeout(resolve, ms); // (A)
});
}
// Using delay():
let delayPromise = delay(1000).then(function () { // (B)
console.log(7);
console.log('1 seconds have passed!')
});
console.log('0 seconds have passed!');
function all_test(ms) {
return new Promise(function (resolve, reject) {
console.log(8);
setTimeout(resolve, ms); // (A)
});
}
Promise.all([
delayPromise,
async1
])
.then(([result1, result2]) => {
console.log(9);
console.timeEnd('A');
console.time('B');
all_test(5000).then(function () { // (B)
console.log('5 more seconds have passed!');
console.timeEnd('B');
console.trace('trace to here?')
});
console.log('successful all_test');
console.log('result1',result1);
console.log('result2',result2);
})
.catch(err => {
console.log(10);
// Receives first rejection among the Promises
console.log('ERROR', err)
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment