2016-08-29 2 views
1

Я получаю GET-запрос и хотел бы подождать ответа для запуска код как это сделать?Ждите ответа на запрос - Angular 2

Мой код

valid() 
{ 
    let headers = new Headers({ 'Content-Type': 'application/json'}); 
    let options = new RequestOptions({ headers: headers, method: "get" }); 
    return this.http.get(this.urlstring+ "getisvalid" , options).toPromise().then(response => response.json()); 
} 

//Code that is in the function 

    this._service.valid().then(resut => this.resut = resut); 
+0

Необходимо уточнить свой вопрос. В чем проблема с размещенным кодом? –

ответ

0

this.http.get вернуться Observable, так что вы должны подписаться на него. если вы измените правомочно(), чтобы:

valid() { 
    let headers = new Headers({ 'Content-Type': 'application/json'}); 
    let options = new RequestOptions({ headers: headers, method: "get"}); 
    return this.http.get(this.urlstring+ "getisvalid" , options).map(response => response.json()); 
} 

затем использовать:

this._service.valid().subscribe(resut => this.resut = resut); 
+0

valid() уже возвращает обещание. –

1

При подписке на наблюдаемую, вы можете указать функцию обратного вызова; в приведенном ниже примере я называю это CompleteValidCall. CompleteValidCall() будет вызываться только при успешном получении, который возвращает данные, а не ошибку. Вы размещаете все, что нужно, по логике, которая вам нужна в функции обратного вызова.

this._service.valid() 
    .subscribe(
     result => this.result = result, 
     error => this.error = error, 
    () => this.CompleteValidCall() 
); 

completeValidCall() { 
    // the rest of your logic here - only executes on obtaining result. 
} 
+0

Код отвечает на вопрос и четко показывает решение. Я добавил краткое описание, чтобы удовлетворить вас. –

+0

Должно ли это быть '() => this.CompleteValidCall'? Вы не хотите ссылаться на это в этот момент. И (я не знаю, Angular, я только что указал здесь на обзор) делает ли обратный вызов какие-либо аргументы? Например. сказать, какие наблюдаемые вызвали его, и/или новое значение? –

+0

Нет, код верный, как указано. Почему вы участвуете в этом, если не знаете угловатых? –

Смежные вопросы