首頁 > web前端 > js教程 > 如何將巢狀的 Node.js Promise 轉換為鍊式序列?

如何將巢狀的 Node.js Promise 轉換為鍊式序列?

Patricia Arquette
發布: 2024-12-14 11:57:11
原創
550 人瀏覽過

How Can Nested Node.js Promises Be Transformed into a Chained Sequence?

解開巢狀 Promise

NodeJS Promise 提供了處理非同步操作的強大機制。然而,嵌套的 Promise 會帶來程式碼複雜性。這個問題深入探討如何將嵌套的 Promise 轉換為更易於管理的鍊式序列。

原始程式碼結構

原始程式碼遵循巢狀方法,其中解析每個Promise 都會觸發後續的Promise 呼叫:

boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken)
    .then(function(response) {
        boxViewerRequest('documents', {url: response.request.href}, 'POST')
            .then(function(response) {
                boxViewerRequest('sessions', {document_id: response.body.id}, 'POST')
                    .then(function(response) {
                        console.log(response);
                    });
            });
    });
登入後複製

連結Promises

為了鍊式Promise,需要從每個 Promise 的 then 回呼中返回新的 Promise。這種方法允許鍊式 Promise 依序解析。

boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken)
    .then(function(response) {
        return boxViewerRequest('documents', {url: response.request.href}, 'POST');
    })
    .then(function(response) {
        return boxViewerRequest('sessions', {document_id: response.body.id}, 'POST');
    })
    .then(function(response) {
        console.log(response);
    });
登入後複製

修改後的程式碼結構確保 Promise 鏈無縫繼續,每一步將其結果傳遞給序列中的下一個 Promise。

一般模式

這種連結模式可以歸納如下:

somePromise.then(function(r1) {
    return nextPromise.then(function(r2) {
        return anyValue;
    });
}) // resolves with anyValue

     ||
    \||/
     \/

somePromise.then(function(r1) {
    return nextPromise;
}).then(function(r2) {
    return anyValue;
}) // resolves with anyValue as well
登入後複製

以上是如何將巢狀的 Node.js Promise 轉換為鍊式序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板