Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Angular2中用synchronous制作http示例?_Angular - Fatal编程技术网

如何在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);

如何在Angular2中用synchronous制作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();
}

但是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