在angular2中订阅后执行下一行之前等待Http请求完成

时间:2017-01-16 12:51:19

标签: angularjs

您能否在评论中回答问题

class TextComp 
{

result: string;
constructor() {

    this.getdata().subscribe(result => {
        console.log("result received");
        this.result = result;
    });

    console.log("called before result received " + this.result);

    //this.result is NULL/UNDEFINED because this line executed before data received

    // So how we can eliminate this situation??? or
    // Is there any way to make synchronus call to http in angular 2
}

getdata() {
    return http.get('test.json')
        .map(response => response.json());
}
}

那么我们如何才能消除这种情况?要么  有没有办法在angular 2

中对http进行同步调用

1 个答案:

答案 0 :(得分:1)

如果你需要在这种情况下进行同步调用,你的代码应该是这样的:

this.getdata().subscribe(result => {
    console.log("result received");
    this.result = result;
    //function or snippet which will be called after subscribe is complete...     
});

因为您的订阅方法异步工作。我建议你也看看promises