首页 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板