Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Promise.all polyfill
- function all(promises) {
- return new Promise(function(resolve,reject) {
- var count = promises.length
- var result = []
- var checkDone = function() { if (--count === 0) resolve(result) }
- promises.forEach(function(p, i) {
- p.then(function(x) { result[i] = x }, reject).then(checkDone)
- })
- })
- }
- // delay helper for creating promises that resolve after ms milliseconds
- function delay(ms, value) {
- return new Promise(function(pass) {
- setTimeout(pass, ms, value)
- })
- }
- // basic boilerplate to check an answer
- function checkAnswer(promises) {
- all(promises).then(
- function(xs) { console.log(xs) },
- function(err) { console.log(err.message) }
- )
- }
- // resolved promises wait for one another but ensure order is kept
- checkAnswer([
- delay(100, 'a'),
- delay(200, 'b'),
- delay(50, 'c'),
- delay(1000, 'd')
- ])
- //////////////////
- Var p1 = new Promise();
- Var p2 = new Promise();
- Var p3 = Promise.all([p1, p2])
- .then((result) => console.log())
- Promise.all
- Var p1 = new Promise();
- Var p2 = new Promise();
- Var p3 = Promise.all([p1, p2])
- .then((result) => console.log())
- Function promiseAll(promiseArrary) {
- Cosnt result = promiseArrary.reduce((acc, promiseInstance, index) => {
- promiseInstance.then((result) => {
- promiseResponse = result;
- result = acc.push(promiseResponse );
- })
- .error(err => {
- result = acc.push(err );
- })
- return result;
- }), [])
- return result;
- }
- Var p4 = promiseAll([p1, p2]);
- // p4 [‘Fetch failed’, 43 ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement