如何在Angular2中创建一个有关同步的http的例子?
我在组件中尝试了如下:
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();
}
但是控制台显示日志在'FIRST'之前是'LAST'。
答案 0 :(得分:1)
实际上,由于底层API(APP_INITIALIZER
)是异步的,因此无法在浏览器中同步加载数据。
话虽如此,如果您的数据是参考数据或配置数据,您可以预加载数据。在这种情况下,您可以利用provide(APP_INITIALIZER, {
useFactory: (service:GlobalService) => () => service.load(),
deps:[GlobalService, HTTP_PROVIDERS], multi: true
})
服务。应用程序将等待返回的promise在实际启动之前得到解决。
以下是一个示例:
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;
}
方法需要类似的东西:
devServer
然后你可以直接使用 unlink(FCPATH.$image->file);
(同步)......