[英]how to turn try catch function into promise and use promise.all
[英]How to use try-catch when awaiting mutiple promises without Promise.all?
我需要执行以下操作:
let promise1 = getPromise1();
let promise2 = getPromise2();
let promise3 = getPromise3();
// some more code
...
result1 = await promise1;
// work with result1 in specific way
result2 = await promise2;
// work with result2 in specific way
result3 = await promise3;
// work with result3 in specific way
由于我需要对每个结果执行非常独特的操作,因此我不想使用Promise.all,因为它会导致某些讨厌的if-else结构。
我的问题是try{}catch(){}
块在哪里放置? 即使其中一个承诺错误,我也不希望它影响其他错误。 无论如何,他们必须完成执行。 我应该将单个resultX
包装在try{}
还是将let promiseX =...
包装。 或两者?
您是否有更好的设计模式?
谢谢!
就像您提到的那样,如果要分别使用不同的Promise,可以将它们包装在它们自己的try/catch
块中。
let result1 = []; // for simplicity
try {
result1 = await getPromise1()
} catch (error) {
console.log(`Error occured: ${error}`);
// fallback
result1 = someComplicatedOperationHere();
}
您可以对其他n
诺言遵循类似的方法,最后将得到一个result1 .. resultN
都包含某些内容。 成功的结果,或回退的结果(或您希望处理的结果)。
但是,请注意,如果您使用await并有多个不同的promise调用,则将为您的应用程序同步获取它们。 含义:他们将(a)wait
第一个诺言返回,然后继续前进。
如果您不希望这样做,则必须使用Promise.all
。 (经典await in for loop
问题。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.