Я пытаюсь использовать asyn c библиотеку для работы с двумерным массивом и обработки каждого сглаженного элемента. Примерно так:
import { each } from 'async';
let results: any[] = [];
await each(chats, async (chat) =>
await each(chat.participants, async (participant) => {
console.log('Before pause');
// do something with participant
results.push(fn(participant));
await this.timeout(2500);
console.log('After pause');
})
);
console.log('Finished');
return results;
где
let chats = [
{
participants: ['1', '2']
},
{
participants: ['3', '4']
}
]
timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
Однако console.log('Finished')
никогда не выполняется. Я пробовал множество вариантов async
и await
в этом коде, но не могу заставить его работать. У меня есть рабочая версия с использованием чистого async / await, но я хотел бы использовать библиотеку asyn c.
Что я делаю не так?
Обратите внимание, что у меня это работает с использованием async / await без использования библиотеки asyn c, например:
await Promise.all(chats.map(
async (chat) =>
await Promise.all(chat.participants
.map(async (participant) => {
console.log('Before pause');
// do something with participant
results.push(fn(participant));
await this.timeout(2500);
console.log('After pause');
})
)
));
return results;
Но я хотел бы использовать библиотеку asyn c, потому что я хочу использовать другие функции из этой библиотеки.