首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用异步功能实现“责任链”模式

使用异步功能实现“责任链”模式
EN

Stack Overflow用户
提问于 2021-08-11 19:25:02
回答 2查看 135关注 0票数 0

我需要运行多个异步操作,直到其中一个返回特定的结果-换句话说,"Chain of Responsibility“模式。

当我尝试实现它时,some是第一个出现的东西。然而,我遇到了异步调用的问题,因为循环在第一次迭代后“卡住”了:

代码语言:javascript
复制
asyncCalls.some(async (call) => {
    const result = await call();
    if (result === expectedResult) {
        printResult(result);
    }
    return result === expectedResult;
});

有没有办法迭代异步函数的数组,并有可能在收到特定响应时中断?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-11 19:36:42

尝尝这个

代码语言:javascript
复制
for (const call of asyncCalls) {
  const result = await call();
  if (result === expectedResult) {
    printResult(result);
    break;
  }
}
票数 1
EN

Stack Overflow用户

发布于 2021-08-11 19:30:29

我有个想法

代码语言:javascript
复制
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));
 });

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68747856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档