簡體   English   中英

如何使用連鎖電話Promise?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM