我正在编写一个Angular 4应用程序,我将基于 id 值的一些JSON返回给PHP脚本。我认为通过我的代码,我将一个值传递到下面的 this.PropertiesList :
examineProperties(id) {
let currentTestIDToFindProperties = this.testScheduleSet[id];
this.allProperty = this.httpClient.get(this.currentTestIDToFindPropertiesUrl + "?testID=" + currentTestIDToFindProperties.value).subscribe((data: any) => {
this.testPropertiesList = data;
console.log("List",this.testPropertiesList);
});
console.log("List After Loop",this.testPropertiesList);
}
我不确定为什么,但我得到一个响应,其中console.log为" List After Loop"显示之前"列表" console.log,显示为 undefined ,如下所示:
this.testPropertiesList 如何在订阅功能之外保留?为什么" List After Loop"在" List"?
之前显示在控制台中答案 0 :(得分:1)
您正在使用 async programming ,您无法暂停代码的执行,您的订阅将在以后解决,但您无法预测何时。 console.log()
之外的subscribe
在您的订阅被解决之前执行,这就是为什么它未定义的内容和console.log()
内部订阅回调仅在订阅时被调用已经解决。
请参阅 this 以便更好地理解。