使用 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中文網其他相關文章!