ng2 http プロバイダー Observable.toPromise() サポートを使用して promise 対応メソッドを呼び出すと、期待どおりに動作しますが、promise チェーンの一部として使用すると、then ハンドラーが処理して結果を返す前に、返された promise が解決されます。
Observable.toPromise() をプロミス チェーンで動作させることに関する既知の問題、またはプロミス チェーンと互換性のある結果にするためにテストする代替方法はありますか? http リクエスト、promise チェーンの最後のアイテムが非同期リクエストを完了して結果を返す前に、この解決中の promise によってブロックされています。
例えば
this.myService.getSomethingInvolvingingMultiplePromiseCalls().then(result => {
let valueFromSomethingInvolvingMultiplePromiseCalls = result;
}, err => {
console.error('landed in app.component outer promise rejected handler, see output window for details')
})
public getSomethingInvolvingingMultiplePromiseCalls(): Promise<string> {
return this.getSomethingInvolvingPromiseCall().then(resultPromise1 => {
let resultPromise1propertyFoo = resultPromise1.propertyFoo;
return this.getSomethingInvolvingNg2HttpProviderToPromiseCall(resultPromise1propertyFoo);
}
.then(resultPromise2 => {
let resultPromise2propertyBar = resultPromise2.propertyBar;
return resultPromise2propertyBar;
}
}
getSomethingInvolvingNg2HttpProviderToPromiseCall(arg1: string): Promise<string> {
let body = 'some body content leveraging arg1';
let headers = new Headers({ 'Authorization': 'Bearer ' + accessToken, 'Content-Type': 'application/x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });
return this.http.post(resourceBaseAddress + '/someRestApi', body, options).toPromise().then(response => {
let responseJson = response.json();
return responseJson['someJsonProperty'];
});
}
}
洞察や提案をお寄せいただきありがとうございます。