2017-06-14 135 views
0

我想一起執行兩個語句,但不是異步執行。有沒有辦法在angular2之前function 2之前執行function 1angular2異步函數執行

+8

請張貼演示您嘗試完成的代碼,您嘗試過的以及失敗的位置。你的問題沒有提供足夠的信息。 –

回答

1

我們可能需要更多的信息,但假設你有2個http調用,並且你想讓它們「同步」(一個是第一個,然後是第二個)。 我會建議使用ReactiveX JavaScript,您可以通過包括導入:

import {Observable} from 'rxjs/Observable'; 
import 'rxjs/add/observable/mergeMap'; 

隨着mergeMap操作符,你可以開始了「第二個任務」(新observable)作爲輸入的第一個的結果。

因此,例如,我需要檢查地址,然後再更新我的用戶配置文件。我有2個http調用;一個是地址檢查,另一個用於更新用戶的個人資料,所以我會做:

this.http.get(geolocationGoogleUrl, this._customAddress) 
    .mergeMap((location: any)=>{ // First http response 
     console.log(location); 
     // Do your stuff before second call 

     return this.http.patch(patchUrl, localAddress); // Use frist http response as input 
    }).subscribe((updatedUser)=>{ // Second http response 
     this._user = updatedUser; 
    }); 

當你注意到了,你需要申請一個可觀察的,以觸發呼叫。