首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用async.js语言和等待?

如何使用async.js语言和等待?
EN

Stack Overflow用户
提问于 2022-01-21 04:22:49
回答 3查看 104关注 0票数 0

我正在尝试实现async库,以便它轮询一个事务的API,直到其中一个事务成功。

代码语言:javascript
复制
router.get('/', async function (req, res) {
      let apiMethod = await service.getTransactionResult(txHash).execute();

      async.retry({times: 60, interval: 1000}, apiMethod, function(err, result) {
           if(err){
              console.log(err);
           }else{
              return result;
           }
           
      });
});

module.exports = router;

然而,我无法用apiMethodawait函数找到正确的语法。

我得到了错误Error: Error: Invalid arguments for async.retry

如何实现它,以便每次失败时都会记录错误,如果60重试循环在完成之前成功,那么如何成功退出60重试循环?(如果它在例如14处结束,则停止重试)。

EN

回答 3

Stack Overflow用户

发布于 2022-01-21 04:33:04

您可以尝试异步重试库。

代码语言:javascript
复制
await retry(
  async (bail) => {
    const res = await service.getTransactionResult(txHash).execute();
    if (res.status >= 400) {
      bail(new Error());
      return;
    }

    const data = await res.text();
    return data;
  },
  {
    retries: 60,
  }
);
票数 0
EN

Stack Overflow用户

发布于 2022-01-21 04:33:40

在我看来,apiMethod应该是一个未解决的承诺,试试这个

代码语言:javascript
复制
router.get('/', async function (req, res) {
      let apiMethod = () => (service.getTransactionResult(txHash).execute())

      async.retry({times: 60, interval: 1000}, apiMethod, function(err, result) {
           if(err){
              console.log(err);
           }else{
              return result;
           }
           
      });
});

module.exports = router;
票数 0
EN

Stack Overflow用户

发布于 2022-01-21 16:48:32

代码语言:javascript
复制
var promises = [];
    let request = service.getTransactionResult(txHash);
    for(let i = 0; i < 60; i++){
        promises.push(request);
    }
    for(let i = 0; i < 60; i++){
        try{
            let result = await promises[i].execute();
        }catch(err){
            console.log(err);
            await new Promise(resolve => setTimeout(resolve, 1000));
        }
        
    }

我不知道如何处理异步库,但是在我的情况下,这个方法适用于轮询,在这种情况下,会抛出错误,等待事务尚未处理,然后重新尝试。

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

https://stackoverflow.com/questions/70796366

复制
相关文章

相似问题

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