Size: a a a

JavaScript.Ninja

2021 June 27

KR

Kirill Romanov in JavaScript.Ninja
я андрею отвечал
источник

AD

Andrew Deimos in JavaScript.Ninja
Де факто да, согласен, но... Постановка вопроса говорит что человек не совсем правильно понимает "асинхронность"... Насчёт таймаутов вы правы... Но тогда все становится ещё интереснее
источник

M

Maksym in JavaScript.Ninja
Ну так же пишет в доке , асинхроность , выполняет очередность , если нет ,то что мне поможет выполнить очередность функций, если у них разная задержка?
источник

AD

Andrew Deimos in JavaScript.Ninja
источник

IK

Illya Klymov in JavaScript.Ninja
вы хотите запускать их строго по-очереди?
источник

M

Maksym in JavaScript.Ninja
Да ,строго , потому что если придёт запрос не тот сперва ,то будет плохо )
источник

IK

Illya Klymov in JavaScript.Ninja
соберите из них один промис
источник

IK

Illya Klymov in JavaScript.Ninja
через then с помощью reduce
источник

M

Maksym in JavaScript.Ninja
А почему ж не работает promise.reaolve().then, пишет что второя функция не выполняетсься когда первая не завершилась)
источник

IK

Illya Klymov in JavaScript.Ninja
потому что вы неправильно собираете )
источник

E

Eugene (\/)(o.o)(\/) in JavaScript.Ninja
нужно promise.all по другому использовать
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

этот пример
var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
 setTimeout(resolve, 100, "foo");
});

Promise.all([p1, p2, p3]).then(values => {
 console.log(values);
});

//Выведет:
// [3, 1337, "foo"]


А это вроде пример про который написал Илья
https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Using_promises
[func1, func2].reduce((p, f) => p.then(f), Promise.resolve());
источник

M

Maksym in JavaScript.Ninja
А если у меня из импорта только готовые запросы что сразу возвращвют даные с сервера ?
источник

E

Eugene (\/)(o.o)(\/) in JavaScript.Ninja
не понял задачу. всё что вернут все импортированные промисы, всё ляжет в массив в нужном порядке.

если вдруг задача состоит в том, чтобы запускать следующий промис только после завершения прошлого, то тогда это другая задача
источник

M

Maksym in JavaScript.Ninja
Надо запускать следующий промис только после завершения прошлого
источник

E

Eugene (\/)(o.o)(\/) in JavaScript.Ninja
тогда как раз способ Ильи, пример которого я приводил в сообщении выше
источник

M

Maksym in JavaScript.Ninja
А что через async await тоже не работает я так понял )
источник

M

Maksym in JavaScript.Ninja
Незнаю плохо ли, но у меня получилось через await сделать))
источник

M

Maksym in JavaScript.Ninja
источник

AS

Alexey Shultsev in JavaScript.Ninja
await в буквальном смысле приостанавливает выполнение функции до резолва.
А Promise.all выполняет все промисы параллельно, независимо друг от друга.
Почему бы просто не воспользоваться обычным чейнингом промисов через then?

Пример с reduce, который вам показали выше, сделает то же самое, что и чейнинг, просто с редьюсом будет компактнее.
источник

M

Maksym in JavaScript.Ninja
Так как раз с обычним прописом then не работает
источник