@uroot

Почему не работает async/await в примере?

Есть такой код:


Необходимо скопировать селект из DOM-а до того, как его обработает библиотека Choices.js (дальше он вставляется по клику, в песочнице это не стал отображать). Хотел решить задачу при помощи async и await:
async function f1() {
  await copyDiv() // копируем div
  await choicesInit('select', {searchEnabled: false, shouldSort: false, itemSelectText: ''}) // обрабатываем библиотекой
  await c1() // выводим скопированный div
}
f1();
Но это не работает. Функция choicesInit обрабатывает select до того, как функция copyDiv скопирует select в переменную (это можно понять из того, что select скрыт и навешаны классы). Я не могу понять почему так.
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
choicesInit copyDiv и c1 у вас обычные синхронные функции. Для них не надо писать await

Сейчас гляну дальше и отпишусь если найду другие косяки

немного изменил ваш пример убрав лишние await-ы и вставив контрольный вывод в консоль для отслеживания порядка вызовов.
https://jsfiddle.net/c02zeh3n/

на выходе имеем правильный порядок: 0, 1, 2, 3, 4, 5 (смотрите вывод в консоль) а значит await у вас отрабатывает верно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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