Как правильно сделать return после вызова асинхронной функции?

Вот такой псевдокод:
data.forEach(function(test){
    if(test.param1)
    {
       asyncFunc(test);
       return;
    }
});


После вызова асинхронной функции asyncFunc(test) нужно завершить работу функции и не обрабатывать остальные элементы массива data. А по факту вызывается сначала несколько раз функция asyncFunc и только потом return;
  • Вопрос задан
  • 112 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Дело не в том, что функция асинхронная (хотя и это тоже), а в том, что forEach не предназначен для такого использования, которые вы описываете. Используйте обычный цикл for и async/await.
Ответ написан
@iShatokhin
JS developer
Array.prototype.forEach не имеет способа остановки, для таких целей лучше использовать Array.prototype.every
Асинхронность функции здесь непричем.

data.every(function(test){
    if(test.param1)
    {
       asyncFunc(test);
       return false;
    }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы