_.forEach вышел из строя - PullRequest
       10

_.forEach вышел из строя

0 голосов
/ 04 августа 2020

У меня есть код в асинхронной c функции:

    let listOfResults = [];
    _.forEach(listOfProducts, async function (product) {
      const result = await calc.calculateProductScore(product);
      const response = await mutateDB.sendProductScoreData(result.productId, result);
      await listOfResults.push(response);
    })
    if (listOfResults.length >= 1) {
      return "yay";
    } else {
      return "boo";
    }

Учитывая, что в массиве listOfProducts есть три элемента, прохождение отладчика в VS Code при его выполнении происходит в следующем порядке :

  1. строка const result = await calc.calculateProductScore(product); выполняется три раза
  2. оператор if (который возвращает boo, поскольку в массив listOfResults ничего не было помещено)
  3. строка const response = await mutateDB.sendProductScoreData(result.productId, result); выполняется три раза
  4. строка await listOfResults.push(response); выполняется трижды

Я вижу в loda sh для каждой документации https://lodash.com/docs/4.17.15#forEach упоминается, что «порядок итераций не гарантируется» - не следует ли мне использовать loda sh для этого типа блока кода? Как я могу использовать Loda sh и гарантировать такой порядок выполнения кода?

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Пожалуйста, ознакомьтесь с этой хорошей статьей, в ней говорится о Array.forEach, но я думаю, что это должно помочь.

https://codeburst.io/javascript-async-await-with-foreach-b6ba62bbf404

0 голосов
/ 04 августа 2020

Я понимаю, что если я хочу навести порядок, мне нужно использовать for (const product of listOfProducts) l oop ....

...