У меня возникают проблемы при попытке вызвать цепочку асинхронных функций внутри массива.Когда я вызываю функцию по отдельности, она работает без проблем, как в примере ниже:
function consoleAll(string) {
return new Promise(function (resolve) {
console1(string).then(function () {
console2(string).then(function () {
resolve();
});
});
});
}
function console1(value) {
return new Promise((resolve) => {
console.log(value + "1");
resolve()
});
}
function console2(value) {
return new Promise((resolve) => {
console.log(value + "2");
resolve()
});
}
consoleAll('value-')
В этом случае правильный результат был ниже:
value-1
value-2
Но когда он передается внутри цикла, он не создает потокправильно и вызывает функции совершенно не в порядке
function consoleAll(string) {
return new Promise(function (resolve) {
console1(string).then(function () {
console2(string).then(function () {
resolve();
});
});
});
}
function console1(value) {
return new Promise((resolve) => {
console.log(value + "1");
resolve()
});
}
function console2(value) {
return new Promise((resolve) => {
console.log(value + "2");
resolve()
});
}
//Call
['h1-', 'h2-', 'h3-'].forEach(function (string) {
consoleAll(string)
});
На этот раз вместо записи приведенного ниже результата:
h1-1
h1-2
h2-1
h2-2
h3-1
h3-2
выводится это:
h1-1
h2-1
h3-1
h1-2
h2-2
h3-3
Похожевызывает функцию console1 для всего массива, а затем вызывает console2.
Кто-нибудь знает правильный способ сделать этот вызов?PS.Мне все равно, если необходимо установить некоторые плагины, чтобы исправить это.