我来自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()'函数同步,在移动到下一行代码之前完成订阅。 –