如何在Angular2中用synchronous制作http示例?
如何在Angular2中用synchronous制作http示例 我在组件中尝试了以下方法:如何在Angular2中用synchronous制作http示例?,angular,Angular,如何在Angular2中用synchronous制作http示例 我在组件中尝试了以下方法: getAllAddress(){ this.addressService.getAllAddress().then(`enter code here` result => { this.data = result.list; this.onChangeTable(this.config, null);
getAllAddress(){
this.addressService.getAllAddress().then(`enter code here`
result => {
this.data = result.list;
this.onChangeTable(this.config, null);
console.log('FIRST');
}
);
console.log('LAST');
}
在职:
public getAllAddress(){
return this.__http.get('LOCATION')
.map((res) => {
return res.json()
})
.toPromise();
}
但是console show log在“FIRST”之前是“LAST”。事实上,您不能在浏览器中同步加载数据,因为底层API(
XMLHttpRequest
)是异步的
也就是说,如果您的数据是参考数据或配置数据,则可以预加载数据。在这种情况下,您可以利用APP\u初始值设定项
服务。在实际启动之前,应用程序将等待返回的承诺得到解决
以下是一个示例:
provide(APP_INITIALIZER, {
useFactory: (service:GlobalService) => () => service.load(),
deps:[GlobalService, HTTP_PROVIDERS], multi: true
})
load
方法类似于:
load():Promise<Site> {
var promise = this.http.get('config.json').map(res => res.json()).toPromise();
promise.then(config => this.devServer = config.devServer);
return promise;
}
load():承诺{
var promise=this.http.get('config.json').map(res=>res.json()).toPromise();
然后(config=>this.devServer=config.devServer);
回报承诺;
}
然后您可以直接使用
devServer
(同步)…Angular2 http不支持同步请求。到底目的是什么?如果确实需要同步请求,则不需要使用Angular2的Http
。