Задать вопрос

Существует ли очередность вызовов self-executing функций в JS?

Добрый день!

Есть подобный кусок кода:
(function ($) {

    // build new menu markup
    var $fn = $('<div />', {id: 'our-unique-id'})
        .wrapInner('<div class="inner-wrap"><nav/></div>');

    // .. do something with it ..

    $fn.appendTo($('body'));

})(jQuery);

(function ($) {

    var $el = $('#our-unique-id'); // А НАЙДЕТ ЛИ?

})(jQuery);


То есть суть такова, что мы внутри одной функции создаем элемент, помещаем его в конец body(без всяких коллбэков), затем внутри второй уже обращаемся к этому элементу. Вопрос следующий - будет ли работать?

Учитывая асинхронность JS могу предположить, что обе функции в какой-либо ситуации запустятся одновременно и вторая будет запрашивать элемент тогда, когда первая его еще физически не создала.
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Будет полезно почитать про EventLoop в JS. (можно посмотреть часть подкаста кантора про nodeJS, там очень хорошо рассказано)
Асинхронные функции помещаются в очередь, где выполняются, когда интерпретатор освободится.
Но в вашем случае функции синхронные, так что выполниться должно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Tsimur_S
>>Учитывая асинхронность JS могу предположить, что обе функции в какой-либо ситуации запустятся одновременно и вторая будет запрашивать элемент тогда, когда первая его еще физически не создала.
Где у вас в коде первого IIEFE ассинхронность?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы