Дождитесь завершения запроса 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...
});
потому что ваш метод подписки работает асинхронно. Я рекомендую вам также взглянуть на обещания.