首頁 > web前端 > js教程 > 如何避免 Node.js 中的巢狀 Promise 並提高程式碼可讀性?

如何避免 Node.js 中的巢狀 Promise 並提高程式碼可讀性?

Linda Hamilton
發布: 2024-12-24 18:10:45
原創
243 人瀏覽過

How Can I Avoid Nested Promises and Improve Code Readability in Node.js?

解開巢狀 Promise

在 NodeJS 中處理網路程式碼並使用 Promise 時,經常會遇到巢狀 Promise。雖然這種結構有時是必要的,但它也可能導致程式碼混亂且不可讀。一種更簡潔、更有效率的方法是連結 Promise,而不是嵌套它們。

嵌套Promise 的問題

考慮以下範例:

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);
                    });
            });
    });
};
登入後複製

此程式碼片段使用嵌套的Promise 連續發出三個API 請求。雖然它功能正常,但它在視覺上混亂且難以理解。

改為連結Promise

要連結Promise 而不是嵌套它們,請修改then 回呼以返回下一個Promise:

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,有效地將它們「連結」在一起。然後,從每個 Promise 解析的值可用作序列中下一個 then 回呼的參數。

透過採用此技術,您可以提高程式碼的可讀性和可維護性,特別是在處理多個 API 請求時.

以上是如何避免 Node.js 中的巢狀 Promise 並提高程式碼可讀性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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