Ниже приведен код node-js, используемый для HTTP-запросов. Этот код выдает ошибку «Это отложенное решение уже разрешено» на производственных серверах, когда я пытаюсь использовать requestPromise.resolve (str) в конце запроса. Может кто-нибудь подсказать, в чем может быть ошибка?
Используемые библиотеки: http и node-prom.
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();





Я думаю, вы не можете использовать 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();
});
Можете ли вы загрузить весь необходимый код, я пытаюсь использовать этот код и что-то менять, и я не вижу ошибки (возможно, я не могу, у него нет событий data, end)
Я добавил, как использую библиотеку обещаний. Пожалуйста, проверьте это и предложите мне ответ.