如何使用 Bluebird Promises 連結和共享多個 HTTP 請求的結果?
Dec 06, 2024 pm 01:13 PM使用Promise 連結和分享先前結果
在您的程式碼中,您嘗試使用Bluebird Promise 庫發出多個HTTP 請求,並且您需要將回應資料從一個請求傳遞到下一個請求。為了實現這一目標,您可以利用多種策略來連結和分享先前的結果與 Promise。
1.連結 Promise
您可以透過從 .then() 處理程序中傳回一個 Promise 來連結 Promise。每個後續的 .then() 將會收到前一個 Promise 的結果。在您的情況下,您可以如下連結請求:
callhttp("172.16.28.200", payload).then(function(first) { return callhttp("172.16.28.200", first); }).then(function(second) { return callhttp("172.16.28.200", second); });
登入後複製
2。累積結果
或者,您可以將所有結果累積到單一物件中。建立一個物件來儲存結果並將其作為參數傳遞給後續請求:
var results = {}; callhttp("172.16.28.200", payload).then(function(first) { results.first = first; return callhttp("172.16.28.200", first); }).then(function(second) { results.second = second; return callhttp("172.16.28.200", second); }).then(function(third) { results.third = third; });
登入後複製
3.嵌套Promise
如果您需要存取之前的所有結果,您可以嵌套Promise。每個嵌套的 Promise 都可以存取外部 Promise 的結果:
callhttp("172.16.28.200", payload).then(function(first) { return callhttp("172.16.28.200", first).then(function(second) { return callhttp("172.16.28.200", second).then(function(third) { // Access all three results here }); }); });
登入後複製
4。打破鏈條
如果某些請求可以獨立進行,您可以打破鏈條並在所有請求完成後使用Promise.all() 來收集結果:
var p1 = callhttp("172.16.28.200", payload); var p2 = callhttp("172.16.28.200", payload); var p3 = callhttp("172.16.28.200", payload); Promise.all([p1, p2, p3]).then(function(results) { // All three results are available in the `results` array });
登入後複製
5.使用async/await(ES7 功能)
在ES7中,您可以使用 async/await 簡化排序非同步操作。這允許您使用常規同步語法,並且中間結果在同一範圍內可用:
async function myFunction() { const first = await callhttp("172.16.28.200", payload); const second = await callhttp("172.16.28.200", first); const third = await callhttp("172.16.28.200", second); // Access all three results here } myFunction().then(result => {}).catch(error => {});
登入後複製
以上是如何使用 Bluebird Promises 連結和共享多個 HTTP 請求的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
兩個點博物館:邦格荒地地點指南
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
兩個點博物館:邦格荒地地點指南
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)