Я строю массив обещаний.Некоторые обещания требуют выполнения http.get () перед разрешением.Другие решают без этого.Я помещаю все обещания в массив, а затем повторяю их.Обещания, включая http.get (), все еще находятся на рассмотрении.
Я пытался выполнить обещание. Все.Я попытался заменить http.get () на resol (200).Это всегда выполняет обещание.
const https = require('https');
const http = require('http');
let promises = [];
exports.RegisterHTTPDependency = function(url, name, severity) {
let promise = [];
let pr = GeneratePromise(url);
promise.push(pr, name, severity)
promises.push(promise)
}
exports.Check = function() {
let results = {};
for (let i = 0; i < promises.length; i++) {
const check = promises[i];
console.log('promise: ', check[0]) // this returns "Promise { <pending> }" or 20,
// depending on if the resolve(20) is included in GeneratePromise
}
}
let GeneratePromise = function(url){
return new Promise(function(resolve, reject) {
// resolve(20) // if I include this code, it returns 20
http.get(url, (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
resolve(resp.statusCode); // this promise does come back <pending>
});
}).on("error", (err) => {
reject(err);
});
});
}
Значение 20 является возвращаемым значением.Я хочу, чтобы resp.statusCode также был возвращаемым значением вместо ожидающего.