重试try / catch on promise catch

问题描述 投票:1回答:1

我正在尝试使用firebase admin sdk运行一个脚本,该脚本使用listUsers()循环遍历所有用户,我正在处理它:

admin.auth().listUsers(batch, nextPageToken)
    .then(function(listUsersResult) {
        // process successful results
    })
    .catch(function(error) {
        // log the error
    });

偶尔对listUsers本身的调用失败,错误Error: www.googleapis.com network timeout. Please try again.

我发现错误,但在此之后我的脚本不会继续。我之前在这种情况下使用过retry,但我想知道是否或如何继续使用我所使用的同一批用户/令牌,而无需重新启动我的listUsers循环。也许我错过了一些非常容易的事情?

node.js firebase try-catch firebase-admin
1个回答
1
投票

我不确定我是否帮助你。您想使用相同的参数重试错误吗?

手动你会这样做:

function fun(batch, nextPageToken, retries = 5) {
  return admin
    .auth()
    .listUsers(batch, nextPageToken)
    .then(listUsersResult => {
      // process successful results
    })
    .catch(error => {
      if (err.code === 'ETIMEDOUT' && retries > 0) {
        const turnsLeft = retries - 1;
        return fun(batch, nextPageToken, turnsLeft);
      }
      throw error;
    });
}

但你应该使用一些库。

© www.soinside.com 2019 - 2024. All rights reserved.