/ / previous operation
/ / Asynchronous request
/ / later
in angular5, how can a process like this wait for the asynchronous request to finish executing before performing the next operation?
/ / previous operation
/ / Asynchronous request
/ / later
in angular5, how can a process like this wait for the asynchronous request to finish executing before performing the next operation?
angular is promise. You can string the operation with the asynchronous request
use callback, the following pseudo code
//
//
.success((//))
if it is cyclic asynchronous, you can use recursion
//
A(){
//
.success((A()))
}
you can first encapsulate a layer of http requests, such as post (url, data = {}, headers = this.headers ()) {
url = this.handle(url);
return this.http.post(url, data, { headers: headers })
.map(response => response.json())
.catch(error => this.errorNotice(error));
}
then write the service or directly introduce postSomething (params: any): Observable
const url = Constant.serverIp + Constant.api.someApi;
return this.DHttp.post(url, params).map(res => res);
}
Last subscription
this.postSomething (this.params) .subscribe (res= > {}, err= > {})
first of all, the http.get () / post () return type in angular is Observable < response >
, not promise
.
but Observable can be converted to promise, so this is to use async await
to make the code look Synchronize.
obsevable: Observable<Response> = this.http.get("url", {headers: headers});
async testObservable() {
//
.....
//
let response: Response = await this.obsevable.toPromise();
//
.....
}
app.component.ts import { Component } from @angular core ; import { AppService } from . service app.service ; @Component({ selector: app-root , templateUrl: . app.component.html , styleUrls: [ . app.component.css ] }) export clas...