延期已经解决了

时间:2018-06-15 15:57:21

标签: node.js

以下是用于HTTP请求的node-js代码。这段代码给出了#34;这个延迟已经解决了#34;我尝试在请求结束时使用requestPromise.resolve(str)时生产服务器上的错误。有人可以建议可能是什么错误吗?

使用的库:http和node-promise

var Promise = require('node-promise').Promise;
var requestPromise = new Promise();

callback = function (response) {
    var str = '';
    response.on('data', function (chunk) {
        str += chunk;
    });
    response.on('end', function () {
        if (!(response && response.statusCode >= 200 && response.statusCode < 300)) {

           requestPromise.resolve(str);

           return;
        }

        var resp;
        try {
            resp = JSON.parse(str);
        } catch (ex) {
            resp = str;
        }
        requestPromise.resolve(str);
    });
});

var request = http.request(options, callback);

request.on('error', function (err) {
    requestPromise.resolve(err);
});
request.write(postObject);
request.end();

1 个答案:

答案 0 :(得分:1)

我认为你不能使用new Promise()(因为它需要解析器)。

您可以使用此代码:

new Promise(function(resolve, reject) {
    callback = function (response) {
        var str = '';
        response.on('data', function (chunk) {
            str += chunk;
        });
        response.on('end', function () {
            if (!(response && response.statusCode >= 200 && response.statusCode < 300)) {

                resolve(str);
                return;
            }

            var resp;
            try {
                resp = JSON.parse(str);
            } catch (ex) {
                resp = str;
            }
            resolve(resp);
        });
    });

    var request = http.request(options, callback);

    request.on('error', function (err) {
        reject(err);
    });
    request.write(postObject);
    request.end();
});