2016-07-18 8 views
1

Angular2で同期を使用してhttpについての例を作成するにはどうすればよいですか?サービスで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(); 
} 

しかし、コンソールのshow logは、 '最初の' の前に 'LAST' です。

+0

Angular2 HTTP

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(同期)を使用することができます...:load方法は、そのような何かをしたいと思い

provide(APP_INITIALIZER, { useFactory: (service:GlobalService) =>() => service.load(), deps:[GlobalService, HTTP_PROVIDERS], multi: true }) 

:ここ

はサンプルです同期要求をサポートしていません。とにかく目的は何ですか?本当に同期要求が必要な場合は、Angular2の 'Http'を使う必要はありません。 –

答えて

1

実際には、基になるAPI(XMLHttpRequest)が非同期であるため、ブラウザで同期してデータを読み込むことはできません。

つまり、データが参照データまたは設定データの場合は、事前にデータをロードできます。この場合、APP_INITIALIZERサービスを利用できます。アプリケーションは、実際に開始する前に、返された約束が解決されるのを待つでしょう。

関連する問題