如何防止在打字稿中调用第一种方法之前调用第二种方法?

How to prevent second method getting called before first method called in typescript?

我需要在 API 调用后调用一个方法。我写了这样的代码

getData(): void {
  this.apiCall();
  this.processAPIData();
}

只有在 apiCall() 完成并且 return 响应成功或为真后,才应调用 processAPIData() 方法。在某些情况下,apiCall() 花费更多时间来 return 响应,并且 processAPIData() 在 apiCall() 完成之前被调用。这在功能上几乎没有问题。我曾尝试将 setTimeout() 用于 processAPIData(),但 apiCall() 可能需要比 setTimeout 中提到的时间段更长的时间。

由于具体的要求和条件,我不想在apiCall()的正文中写processAPIData()。那么有人可以帮助我解决这个问题吗?

编辑:由于你们中的一些人询问了 apiCall() 结构,我添加了它的示例结构。

apiCall(): void 
{
       this.getAPIData().subscribe((response) => {
       this.dataToBeProcessed = response.data;
      });
}

您可以将 getData 函数声明为 async 并在 apiCall 中使用 await。

async getData() {
  await this.apiCall();
  this.processAPIData();
}

这是一个 js 功能。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

使用异步函数和 Promises 可以实现您想要实现的目标。

首先,您需要使 this.apiCall 成为一个异步函数。这确保它 returns 是一个承诺,您可以等待它。

async apiCall() {
  const res = await this.getAPIData().toPromise()
  this.dataToBeProcessed = res.data
}

为了能够等待 apiCall 的结果,您还需要使 getData 异步:

async getData() {
  await this.apiCall()
  this.processAPIData()
}

编辑:使用 OP

提供的新信息