Created
June 24, 2016 23:24
-
-
Save rot26/3728bdc869675f51c22cd81053eb6062 to your computer and use it in GitHub Desktop.
Playing with Promises
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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