Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Событие изменения текста в div (https://javascript.ru/forum/jquery/62189-sobytie-izmeneniya-teksta-v-div.html)

Dinar 28.03.2016 18:44

Событие изменения текста в div
 
имеем такой html:
<div class="foo">foo text</div>

В этот блок мы вставляем сообщение "Запрос к серверу...", затем генерируем сам запрос:
// 1) команда изменения содержимого div
$(".foo").text("Запрос к серверу...");

// 2) ресует <div class="foo">Запрос к серверу...</div>

// 3)  окно подвисает на время запроса к серверу
$.ajax({... async: false, ... });

На деле работает в последовательности 1,3,2, то есть текст меняется после запроса.
Можно исправить это так:
$(".foo").text("Запрос к серверу...");

setTimeout(function(){
  $.ajax({... async: false, ... });
}, 20);

.. но хотелось бы как-то так:
$(".foo").text("Запрос к серверу...").done(function(){
    $.ajax({... async: false, ... });
})

Есть ли такое решение?

Dilettante_Pro 28.03.2016 18:51

Dinar,
Поставьте async: true, и будет 1-2-3
А потом в sucsess напишите в div о выполнении запроса

Dinar 28.03.2016 18:57

Да, верно. Но хотелось бы решения с async:false

Dinar 28.03.2016 19:01

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

destus 28.03.2016 19:05

Dinar,
переписать на ES6 и юзать его фичи - промисы.


Часовой пояс GMT +3, время: 00:11.