Size: a a a

JavaScript.Ninja

2021 June 04

VK

Vladimir Klimov in JavaScript.Ninja
Вот и я так думаю
Потому считаю, что первый способ, в принципе, эыфективнее и стоит использовать его, а потом уже данные преобразовывать синхронно
источник

AK

Anton Kalodzich in JavaScript.Ninja
Хм, а в чем смысл блокировать поток на обработку данных за раз?
источник

VK

Vladimir Klimov in JavaScript.Ninja
Это быстрее, разве нет?
источник

AK

Anton Kalodzich in JavaScript.Ninja
За счёт чего?
источник

VK

Vladimir Klimov in JavaScript.Ninja
За счет отсутствия лишних тасок и т.п.
Я о случае как на исходном скрине
источник

AK

Anton Kalodzich in JavaScript.Ninja
Так в любом случае, хоть в одной таске, хоть в нескольких, там одинаковые действия с данными же
источник

AS

Alexey Shultsev in JavaScript.Ninja
вообще теория нам говорит, что функция, объявленная с ключевым словом async, возвращает промис.
соответственно справедливы оба случая: в первом - это возвращающий промис колбэк (сам колбек объявлен с async), во втором - это синхронный колбек, который возвращает результат вызова фукнции foo (и тут уже сама функция foo объявлена с async, а значит она возвращает промис, а значит и колбэк тоже вернет промис).

если при прочих равных вы все равно через Promise.all ожидаете резолва всех этих промисов, то в чем прикол городить async-await конструкции в методе массива?)
если вы абстрагируетесь от того, что эта функция foo возвращает - то мы вернемся к тому что map просто преобразует один массив в другой, это гораздо проще понять тогда

и да, await не дожидается выполнения колбека для текущего элемента массива
источник
2021 June 05

MM

Mikita Melnikau in JavaScript.Ninja
разница огромная. ты через map вызвал цикл и каждый проход будет прерывание как тебе и сказали. если установишь минимальный линтер тебе он сразу красным такую херню подчеркнёт
источник

IK

Illya Klymov in JavaScript.Ninja
Нету разницы
источник

IK

Illya Klymov in JavaScript.Ninja
На каждый цикл не будет прерывания
источник

IK

Illya Klymov in JavaScript.Ninja
Хороший показатель как async портит восприятие промисов
источник

MM

Mikita Melnikau in JavaScript.Ninja
а почему тогда линтеры ругаются no-async-in-loop?
источник

IK

Illya Klymov in JavaScript.Ninja
Если они это делают внутри мап тогда странно :)
источник

IK

Illya Klymov in JavaScript.Ninja
Но я думаю вы путаете с await внутри for
источник

VK

Vladimir Klimov in JavaScript.Ninja
Нет, у меня вопрос именно в том, в какой набор тасков и микротасков это все развернется, то, что "прерываний" не будет каждую итерацию - ясно, просто вернутся промисы сразу и все
источник

VK

Vladimir Klimov in JavaScript.Ninja
С колбеком в .then понятно что и когда попадает в очередь задач 😁
А с async/await -я еще не разобрался
И вообще что значит вот это "прерывание" на самом деле и как оно работает
источник

DZ

D Z in JavaScript.Ninja
Всегда можно проверить. await smth == Promise.resolve(smth).then()
источник

IE

Ilia Eliseev in JavaScript.Ninja
Похоже надо этот сахар на промисах написать, чтобы стало все понятно.
источник

IE

Ilia Eliseev in JavaScript.Ninja
источник

IE

Ilia Eliseev in JavaScript.Ninja
На промисах выглядеть будет примерно так. У вас же, когда среди кода встретится new Promise() и дальше за ним без всяких then будет идти еще какой-то код, то он же дальше побежит, а не прервется. Тут ровно то же самое.
источник