У меня есть следующий код:
var Promise = require('bluebird');
var reqP = Promise.promisifyAll(require('request-promise'));
var requestsArray = [];
function getRequests(){
const req1 = {
method: 'GET',
uri: 'url'
}
const req2 = {
method: 'GET',
uri: 'url'
}
const req3 = {
method: 'GET',
uri: 'url'
}
const req4 = {
method: 'GET',
uri: 'url'
}
const req5 = {
method: 'GET',
uri: 'url'
}
const req6 = {
method: 'GET',
uri: 'url'
}
const req7 = {
method: 'GET',
uri: 'url'
}
Promise.all([reqP(req1), reqP(req2), reqP(req3),
reqP(req4), reqP(req5), reqP(req6),
reqP(req7)])
.then(function (results) {
for(re in results){
switch(re){
case '0':
requestsArray.push({'req1':{'value':JSON.parse(results[re])}})
break;
case '1':
requestsArray.push({'req2':{'value':JSON.parse(results[re])}})
break;
case '2':
requestsArray.push({'req3':{'value':JSON.parse(results[re])}})
break;
case '3':
requestsArray.push({'req4':{'value':JSON.parse(results[re])}})
break;
case '4':
requestsArray.push({'req5':{'value':JSON.parse(results[re])}})
break;
case '5':
requestsArray.push({'req6':{'value':JSON.parse(results[re])}})
break;
case '6':
requestsArray.push({'req7':{'value':JSON.parse(results[re])}})
break;
}
}
return requestsArray;
})
.catch(function (err) {
console.log('Error: ', err);
})
}
module.exports = {getExampleFile};
return requests Array
возвращается пустым (или неопределенным), потому что если он запускается без ожидания завершения цикла.
Как я могу это сделатьждать завершения цикла for, так как в этом случае он уже вложен в .then ()?
Я прошел через множество опций, начиная с Promises, используя другую функцию, которая будет вызываться на 6-й итерации, и переходя к асинхронному ожиданию.
Работал с этим, но все еще не совсемхотя, конечно, убедитесь, как реализовать каждое из предложенных решений.
Спасибо.