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

Vin*_*ler 0 javascript recursion async-await

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

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。我怎样才能让它发挥作用?

Buh*_*ica 6

} else {
  return await installation();
}
Run Code Online (Sandbox Code Playgroud)

递归函数会再次调用整个函数。