如何使用 jQuery Promises 連結三個非同步呼叫並在它們之間傳遞資料?
當處理需要順序執行的三個 HTTP 呼叫時,請考慮利用 jQuery Promise 來連結呼叫並促進資料傳輸。
最初,嘗試對兩個函數使用延遲物件會產生部分解決方案。然而,將此方法擴展到三個函數需要不同的策略。
連結呼叫並傳遞資料
在每個呼叫中,傳回 $.ajax 產生的 jqXHR 物件()。這些物件遵循 Promise 接口,可以使用 .then()/.done()/.fail()/.always() 進行連結。
<code class="javascript">function first() { return $.ajax(...); } function second(data, textStatus, jqXHR) { return $.ajax(...); } function third(data, textStatus, jqXHR) { return $.ajax(...); }</code>
在主函數中,將函數連結為.then() 如下:
<code class="javascript">function main() { first().then(second).then(third); }</code>
傳遞給後續函數的data、textStatus 和jqXHR 參數源自前面函數中的$.ajax() 呼叫。這允許每個函數存取和利用前一個呼叫的輸出。
出於說明目的,下面的演示使用 $.when('foo') 而不是 $.ajax(...) 來提供已履行的承諾。
<code class="javascript">function main() { $.when('foo').then(second).then(third); }</code>
透過以這種方式連結承諾並傳遞數據,您可以同步有效地執行三個非同步呼叫。
以上是如何使用 jQuery Promises 連結非同步呼叫並在它們之間傳遞資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!