【问题标题】:Angular - Waiting for backend call to finish and not skipAngular - 等待后端调用完成而不是跳过
【发布时间】:2023-01-23 16:21:45
【问题描述】:

刚接触角度,我有这个问题,我一直在努力解决。 我四处寻找解决方案,但我的情况没有运气。

所以这是我的问题。

我打电话给后端。

private setDocId(document: Document){
    this.api.getInfo(randomNumber: number).subscribe(data => {
    if (data === 1) {
      document.id = data;
       }
    })
}

定期验证检查

   private checkIfDocExists(document: Document){
    return document.isExists ? document.approved = true : document.approved = false:
}

验证两种方法

private isValid(): boolean {
   this.setDocId(document);
   const isExists = this.checkIfDo1cExists(document);
   return isExists && document.id !== null;
}

如您所见,如果两个条件都为真,最后一个方法将返回验证; 两个条件都为真,但是由于后端调用不等待并继续它返回假,因为它还没有完成初始化。

有没有办法让第一个方法(通过 api 调用后端)在继续之前等待完成? 不使用 setInterval 或 setTimeout?

谢谢。

【问题讨论】:

    标签: angular subscription


    【解决方案1】:

    您可以使用asyncawait 让第一个方法先完成。

    private async setDocId(document: Document){
        const data = await this.api.getInfo(randomNumber: number).toPromise();
        if (data === 1) {
          document.id = data;
        }
    }
    
    private isValid(): boolean {
       await this.setDocId(document);
       ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 2019-11-19
      • 2014-03-31
      • 1970-01-01
      • 2012-08-27
      • 2013-01-02
      • 1970-01-01
      相关资源
      最近更新 更多