我來自Java背景。我開始學習Angular2並開始工作。在我的一個項目中,我遇到了一個我無法理解的情況。代碼執行流程
對於我的分頁實現,我使用Angular2 observables獲取數據庫中所有可用標書的數量。獲取值後,我只是將其登錄到控制檯,以確保代碼正常工作。但它打印未定義。
這是我的代碼的相關部分。
this.getNumberOfAllTenders();
console.log("number of tenders = "+this._numberOfAllTenders);
這裏是輸出
數標段=未定義
以下是這需要投標的數量從後端的方法
getNumberOfAllTenders(){
this._tendersService.getNumberOfAllTenders().
subscribe(
numberOfAllTenders => this._numberOfAllTenders = numberOfAllTenders,
error => this._error_all_numbers = error
);
console.log('+++++++++++++++++++ number of tenders in db = '+this._numberOfAllTenders);
}
在上面的代碼片段中,還有一行要打印到控制檯。該輸出也是未定義的。但是,一旦變量被分配了從後端獲得的值,該行就會被執行。
我確定,我的服務代碼從後端獲取值。我試圖在我的模板上打印它。它打印正確的值。
現在我的問題是,爲什麼它在控制檯中打印'undefined'。這些變量被正確賦值。據我所知,一旦調用了賦值給變量的函數,這些值應該可用於代碼的後面部分。
請在此說明我。 Angular2中的代碼執行流程有何不同?
這很有道理。非常感謝。但是,沒有辦法等待異步調用先完成然後繼續? – vigamage
我不知道有什麼方法可以使'observable .... subscribe()'函數同步,在移動到下一行代碼之前完成訂閱。 –