我正在尝试使用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循环。也许我缺少一些真正容易的东西?

最佳答案

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

手动执行以下操作:

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;
    });
}


但是您应该为此使用一些库。

09-04 05:28