【问题标题】:Rest API redundancy with promises带有承诺的 Rest API 冗余
【发布时间】:2022-11-28 07:52:05
【问题描述】:

如果我手头有一些异步 fetch() 和它们各自的承诺,我会寻求实现一个功能,以便最早解析为 Response() 且状态代码为 200 将返回非常 Response 并将其他所有内容丢弃到垃圾收集器的边缘地带。另一方面,如果没有一个使用代码 200 解析,则返回具有非 200 代码的最新解析。

实现这一目标的最优雅方法是什么?我不太喜欢 js - 我相信应该有某种广泛使用的模式......

【问题讨论】:

    标签: javascript typescript async-await promise


    【解决方案1】:

    这是Promise.any 的完美用例。它从一组承诺中以最快的速度实现,并且仅在所有承诺都被拒绝后才拒绝(与Promise.race相反)。所以你会用

    const responsePromises = [fetch(…), fetch(…), …];
    const fastestResponse = await Promise.any(responsePromises.map(p => p.then(response => {
      if (response.status == 200) return response;
      else throw new Error('Non-200 response');
    }));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      相关资源
      最近更新 更多