如何在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
答案 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();
}
我希望这会有所帮助。