Дождитесь завершения запроса Http перед выполнением следующей строки после подписки в angular2

Можете ли вы ответить на вопрос в комментарии

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());
}
}

Так как мы можем устранить эту ситуацию??? или есть ли способ сделать синхронный вызов http в angular 2

1 ответ

Если вам нужно сделать синхронные вызовы, в этом случае ваш код должен выглядеть примерно так:

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

потому что ваш метод подписки работает асинхронно. Я рекомендую вам также взглянуть на обещания.

Другие вопросы по тегам