首頁 > web前端 > js教程 > 如何簡化 NodeJS 中網路請求的巢狀 Promise?

如何簡化 NodeJS 中網路請求的巢狀 Promise?

Patricia Arquette
發布: 2024-12-07 20:23:13
原創
621 人瀏覽過

How Can I Streamline Nested Promises in NodeJS for Network Requests?

刪除巢狀 Promise

使用 NodeJS 處理網路請求和 Promise 時,可能會遇到巢狀 Promise。雖然這本質上並不是錯誤的,但人們可能需要將這些 Promise 連結在一起以獲得更簡化的流程。

提供的程式碼片段示範了使用多個巢狀Promise 進行API 呼叫的場景:

exports.viewFile = function(req, res) {
    var fileId = req.params.id;
    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);
                        });
                });
        });
};
登入後複製

要連結這些承諾,需要簡單的修改:

exports.viewFile = function(req, res) {
    var fileId = req.params.id;
    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);
      });
};
登入後複製

這種方法的關鍵是從每個then 回調回傳新的Promise:

.then(function(response) {
    return nextPromise;
})
登入後複製

這確保 Promise 鏈繼續並使用「內部」Promise 的值進行解析。透過連結這些承諾,您可以建立更具可讀性和可維護性的程式碼庫。

以上是如何簡化 NodeJS 中網路請求的巢狀 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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