小编Vin*_*ler的帖子

如何在 Javascript 中进行递归异步/等待?

我有以下代码,去掉了任何细节:

const installation = async() => {
  try {
    const call = await callToServer();
    
    if('finished' in call) {
      return call;
    } else {
      await callToServer();
    }
  } catch(e) {
  //
  }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我想递归调用,callToServer直到看到finished它的响应。我理解为什么我的代码不起作用以及为什么它只进行 2 次调用(或者 1 次,如果它finished在第一次运行时看到),但我不知道如何使其递归。

我尝试使用for循环,嗯,它按原样工作,但就我而言,我不知道需要预先拨打的电话数量。所以我进入了一个do...while循环,因为它似乎适合:

do {
    const call = await callToServer();
} while(!('finished' in call));
Run Code Online (Sandbox Code Playgroud)

但这只运行一次。它看到while(!...实际上并不知道call。我怎样才能让它发挥作用?

javascript recursion async-await

0
推荐指数
1
解决办法
3977
查看次数

标签 统计

async-await ×1

javascript ×1

recursion ×1