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

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

我正在使用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 );
        }
    });}


慕莱坞森
浏览 622回答 2
2回答

慕的地10843

callhttp可以是任何异步操作,它返回异步操作时解析或拒绝的承诺。这个答案所基于的原始问题中有一个它的实现,但它可以是任何返回承诺的异步操作。
打开App,查看更多内容
随时随地看视频慕课网APP