-
-
Save nhagen/a1d36b39977822c224b8 to your computer and use it in GitHub Desktop.
var a = ["sdfdf", "http://oooooolol"], | |
handleNetErr = function(e) { return e }; | |
Promise.all(fetch('sdfdsf').catch(handleNetErr), fetch('http://invalidurl').catch(handleNetErr)) | |
.then(function(sdf, invalid) { | |
console.log(sdf, invalid) // [Response, TypeError] | |
}) | |
.catch(function(err) { | |
console.log(err); | |
}) | |
Promise.all(a.map(function(e) { | |
return fetch(e).catch(handleNetErr) | |
})).then(function(e) { | |
console.log('then',e) // Outputs: 'then', [Response, TypeError] | |
}).catch(function(e) { | |
console.log('err',e) | |
}) |
let a = new Promise((res, rej) => res('Resolved!')), | |
b = new Promise((res, rej) => rej('Rejected!')), | |
c = a.catch(e => { console.log('"a" failed.'); return e; }), | |
d = b.catch(e => { console.log('"b" failed.'); return e; }); | |
Promise.all([c, d]) | |
.then((first, second) => console.log('Then', first, second)) // Then ["Resolved!", "Rejected!"] | |
.catch(err => console.log('Catch', err)); | |
Promise.all([a.catch(e => e), b.catch(e => e)]) | |
.then((first, second) => console.log('Then', first, second)) // Then ["Resolved!", "Rejected!"] | |
.catch(err => console.log('Catch', err)); | |
Promise.almost = r => Promise.all(r.map(p => p.catch ? p.catch(e => e) : p));
I added the 'almost' prototype to my promises, using this technique, nice solution.
@scagood that's beautiful and very useful, ty
Great. Thanks!
Sweet! 😁
Thanks. This should be inbuilt in ES6.
Inspired from your examples, I created a small library https://www.npmjs.com/package/promise-all-always
Very nice. The one downside I see is that, since this forces all promises to resolve, we can't tell whether the output of the promise is an error string or an actual output. That is, not unless we return an object that has a field that tells us whether this output is a rejection or a normal output.
awesome!! Thanks lots
Instead of using Promise.all()
, you can use Promise.allSettled()
.
Refer: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled
This was a great solution!