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