Angular 8:同步/顺序运行组件类方法

时间:2019-11-13 07:27:42

标签: javascript angular typescript angular8

如何在Angular Typescript中同步运行方法? 这些不是函数,而是方法。 第一个调用服务,然后第二个保存到数组中。

runTwoMethods()
{
  this.validateAddress();
  this.saveJsonArchive();
}

有效地址可能会调用更多子方法,甚至可能不是Api,因此要等到一切完成后再保存。

以下语法适用于函数,当前正在搜索类方法,

Angular / TypeScript - Call a function after another one has been completed

最后,数据被存储到当前数据对象中。我想成为 保存到存档。也许还有另一种可能性,如何使AddressCurrentMailing和JSONArchive [2]保持同步?

当前数据对象源自API,不确定该在哪里(也不允许我编辑API,然后调用转换),然后将其保存到JsonArchive中。

 this.jsonArchive[this.jsonArchiveCounter] = this.addressCurrentMailingFinalData

2 个答案:

答案 0 :(得分:0)

您可以在回调中使用Observable作为第一种方法,并在Subscribe之后使用第二种方法。

validateAddress(): Observable<Someclassname>
{
    return this._http.get<Someclassname>('url');
}

this.yourService.validateAddress().subscribe(
                (result) => { 
                  this.saveJsonArchive();
                },
                (error) => console.log('NO saveJsonArchive'));

编辑validateAddress中还有一个Observable

const ox: Observable<Someclassname>[] = [];
ox.push(this.http.get<Someclassname>(url1));
ox.push(this.http.get<Someclassname>(url2));
ox.push(this.http.get<Someclassname>(url3));
forkJoin(ox).subscribe(result => this.saveJsonArchive());

答案 1 :(得分:-1)

您可以在“ this.validateAddress();”中返回一个Promise。等待它。

我假设您使用的是Angular HttpClient。

例如:

private validateAddress(): Promise<someclassname>
{
    return this._http.get<someclassname>("someurl").toPromise()
}


async addSeasonal()
{
    await this.validateAddress();
    await this.saveJsonArchive();
}

我希望这会有所帮助。