首页 >web前端 >js教程 >如何简化 NodeJS 中网络请求的嵌套 Promise?

如何简化 NodeJS 中网络请求的嵌套 Promise?

Patricia Arquette
Patricia Arquette原创
2024-12-07 20:23:13655浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn