为了账号安全,请及时绑定邮箱和手机立即绑定

如何用承诺来链接和分享先前的结果

如何用承诺来链接和分享先前的结果

慕莱坞森 2019-06-19 19:49:20
如何用承诺来链接和分享先前的结果我正在使用Bluebird库,需要发出一系列HTTP请求,并需要对下一个HTTP请求的一些响应数据进行处理。我构建了一个函数来处理我的请求callhttp()..这需要一个网址和一个帖子的正文。我这样叫它:var payload = '{"Username": "joe", "Password": "password"}';var join = Promise.join;join(     callhttp("172.16.28.200", payload),     callhttp("172.16.28.200", payload),     callhttp("172.16.28.200", payload),     function (first, second, third) {     console.log([first, second, third]);});第一个请求获得一个API密钥,需要传递给第二个请求,依此类推。如何从第一个请求获得响应数据?更新这是callhttp职能:var Promise = require("bluebird");var Request = Promise.promisify(require('request'));function callhttp(host, body) {     var options = {         url: 'https://' + host + '/api/authorize',         method: "POST",         headers: {             'content-type': 'application/json'         },         body: body,         strictSSL: false     };     return Request(options).spread(function (response) {         if (response.statusCode == 200) {            // console.log(body)             console.log(response.connection.getPeerCertificate().subject.CN)             return {                 data: response.body            };         } else {             // Just an example, 200 is not the only successful code             throw new Error("HTTP Error: " + response.statusCode );         }     });}
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

callhttp可以是任何异步操作,它返回异步操作时解析或拒绝的承诺。这个答案所基于的原始问题中有一个它的实现,但它可以是任何返回承诺的异步操作。

查看完整回答
反对 回复 2019-06-19
  • 2 回答
  • 0 关注
  • 616 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信