Я использую библиотеку Bluebird Promise в скрипте узла, и у меня возникают проблемы с пониманием порядка выполнения кода.У меня есть массив Обещаний, что я использую метод .each
, чтобы они выполнялись последовательно по порядку.В каждом из этих обещаний у меня есть два связанных обещания, но второе обещание не выполняется в ожидаемом порядке.
Если мы возьмем следующий код, я бы подумал, что результат будет 0.0, 0.1, 0.2, 1.0, 1.1, 1.2
...так далее.Но это не похоже на случай.Он производит 0.0, 0.1, 1.0, 1.1, 0.2, 1.2
... и т. Д.
function subPromise1(index)
{
return new Promise(function (resolve, reject) {
console.log(String(index) + ".1");
resolve(index);
});
}
function subPromise2(index)
{
return new Promise(function (resolve, reject) {
console.log(String(index) + ".2");
resolve(index);
});
}
var promiseArray = [];
for (var index = 0; index < 2; index++) {
promiseArray.push(new Promise(function (resolve, reject) {
console.log(String(index)+".0");
subPromise1(index).then(subPromise2).then(function (result) {
resolve(result);
});
}));
}
Promise.each(promiseArray, function (index) {
console.log("Completed " + index);
}).then(function (result) {
console.log(result);
process.exit(0);
});
Я бы подумал, что главное "каждое" обещание должно быть разрешено перед выполнением следующего обещания в массиве?Буду очень признателен за любую помощь в понимании проблемы.