我需要运行多个异步操作,直到其中一个返回特定的结果-换句话说,"Chain of Responsibility“模式。
当我尝试实现它时,some是第一个出现的东西。然而,我遇到了异步调用的问题,因为循环在第一次迭代后“卡住”了:
asyncCalls.some(async (call) => {
const result = await call();
if (result === expectedResult) {
printResult(result);
}
return result === expectedResult;
});有没有办法迭代异步函数的数组,并有可能在收到特定响应时中断?
发布于 2021-08-11 19:36:42
尝尝这个
for (const call of asyncCalls) {
const result = await call();
if (result === expectedResult) {
printResult(result);
break;
}
}发布于 2021-08-11 19:30:29
我有个想法
const runFunc = (asyncCalls,expectedResult) => {
return new Promise((res,rej) => {
Promise.all(asyncCalls.map(async (call) => {
const result = await call();
if (result === expectedResult) {
res(result);
}
return result === expectedResult;
}))
// if it hasn't been fullfilled, reject
.then(() => rej()).catch((err) => rej(err));
});
}https://stackoverflow.com/questions/68747856
复制相似问题