[英]How to use chain calls Promise?
現在在.then
部分,我所有其他的諾言http請求:
.then(result => { this.service().then(data => {}); });
使用鏈式諾言是正確的方法嗎?
幾乎! 您需要在函數中返回promise,如下所示:
.then(result => { return this.service().then(data => {}); });
或像這樣:
.then(result => this.service().then(data => {}));
由於您使用的是Typescript,因此可以使用async/await
以更加可讀的方式鏈接promise:
function firstCall(): Promise<any> { /* return a promise */ }
function service(): Promise<any>{ /* return a promise */ }
async function runPromisses() {
var result = await firstCall();
var data = await service();
// ...
}
是的,您的兩個承諾會按順序解決。 但是請記住,您的第二個(內部)承諾僅在第一個然后成功解決后才會被調用。
甚至更清潔的解決方案是:
.then(result => this.service()).then(data => {});
正如Hrishi在此SO答復中所詳細說明的那樣,在then()
函數內部返回“ thenable”(例如Promise),使舊的Promise采納新Promise的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.