var a = ['url1', 'url2', 'url3'];
var op = [];
cb = (callback) => {
for (var i = 0; i < a.length; i++) {
gtts.savetos3(`${a[i]}.mp3`, a[i], 'ta', function(url) {
console.log(url['Location']);
op.push(url['Location']);
});
}
callback()
}
cb(() => {
console.log(op);
})
В приведенном выше коде gtts.savetos3 является асинхронной функцией . Это занимает значительное время для завершения выполнения для каждого элемента в массиве. Из-за асинхронного Я не могу напечатать полный массив URL-адресов в массиве op , так как он печатает пустой массив.
gtts.savetos3 функция вызывает указанный обратный вызов с правильным URL-адресом, так что Я могу напечатать вывод, используя console.log
, но когда дело доходит до циклов, я запутался.
Мой вопрос
- Как сделать функцию обратного вызова вызываемой только после выполнения всех элементов массива, обработанных функцией gtts.savetos3 .
- , мы можем достичь решения вышеуказанной проблемы без Promise.all или без Обещание с помощью использования только обратных вызовов .
Заранее спасибо ...!