我可以进行http调用以获取响应并访问block1中的数据。我无法在block1之外使用它。它说未定义。如何在block1之外使用响应数据。
this._demoService.get('/app/food.json').subscribe(
data => { //block1
this.foods = data;
console.log(data);
},
err => {
console.log('error '+err.status);
console.log('success');
},
() => console.log('done loading ')
);
//block2
答案 0 :(得分:1)
由于您的数据是异步接收的,因此您无法在this._demoService.get
阻止后立即访问数据。我的意思是后者,所以当get
方法返回数据时,那里......
请注意,Angular2提供了异步管道来帮助处理这种情况。您需要将observable设置为class属性而不是数据。
this.foods = this._demoService.get('/app/food.json');
并在模板中使用:
<div *ngFor="let food of foods | async">
{{food.name}}
</div>
答案 1 :(得分:0)
这是预期的行为。当来自服务器的数据到达时执行block1
,这可能需要一些时间。
block2
立即执行。此时甚至没有启动对服务器的请求。
如果要在数据到达后执行代码,则需要在block1
内移动代码。