Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ожидание завершения работы функции (https://javascript.ru/forum/misc/4933-ozhidanie-zaversheniya-raboty-funkcii.html)

Tim 31.08.2009 13:48

Ожидание завершения работы функции
 
Ситуация:

Есть две функции. 1-я устанавливает асинхронное соединение и вставляет переданный контент на страницу. 2-я функция ищет в этом контенте блоки с исходными кодами и организует подсветку синтаксиса. Проблема в том, что 2-я функция не ждёт завершения работы первой и пытается найти сырцы в ещё пустом узле. Проблему удаётся решить запуском 2-й функции с некоторой задержкой. На локальном сервере достаточно 50-100 мс. На веб сервере оно наверняка увеличиться.

Подскажите как можно убедиться что 1-я функция завершила работу.

JSprog 31.08.2009 14:02

Может соединить эти функции? и пусть подсветка будет в конце функции

Tim 31.08.2009 14:16

Скорее всего так и придётся делать. Просто через 1-ю ф-ю я запускаю все свои Ajax запросы, она достаточно большая - придётся очень много всего править. Хотелось бы найти более гуманный способ.

Кстати, может подскажите почему такие противоестественные вещи вообще происходят? Просто параллельная обработка какая-то...

JSprog 31.08.2009 14:26

Или попробуй повесить обе функции на события

Kolyaj 31.08.2009 14:39

Для этого асинхронным функциям передается callback, который вызывается после завершения работы функции.

Tim 31.08.2009 15:09

JSprog,
спс за идею, попробую, тока события найду подходящие

Kolyaj,
можно примерчик маленький с callback? я что то я не очень представляю как это выглядит.

Kolyaj 31.08.2009 15:23

В простейшем случае так
function request(url, params, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        // Допустим мы уже дождались ответа
        callback();
    };
}

Tim 31.08.2009 15:28

спс, то что нужно :dance:


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