我有一些问题要处理“并行”中的多次拒绝.
当我们“等待并行”时,如何处理异步函数中的拒绝.
这是一个例子:
当我们“等待并行”时,如何处理异步函数中的拒绝.
这是一个例子:
function in_2_sec(number) { return new Promise((resolve,reject) => { setTimeout(() => { reject('Error ' + number); },2000); }) } async function f1() { try { let a = in_2_sec(3); let b = in_2_sec(30); return await a + await b; // awaiting in "parallel" } catch(err) { console.log('Error',err); return false; } } async function f2() { try { let a = await Promise.all([in_2_sec(3),in_2_sec(30)]); return a[0] + a[1]; } catch(err) { console.log('Error',err); return false; } } // f1().then(console.log) // UnhandledPromiseRejectionWarning // f2().then(console.log) // Nice
f1()在节点中创建UnhandledPromiseRejectionWarning,因为不处理第二次拒绝(b).
f2()工作得很好,Promise.all()可以做到这一点,但是如何在没有Promise.all()的情况下使用async / await语法创建一个f2()?