Показать сообщение отдельно
  #1 (permalink)  
Старый 09.01.2014, 04:20
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Асинхронная модель. События
Всем привет, ребята!

Разрабатывая искусственный интеллект для зомби в моей игре столкнулся с проблемой.
А именно достаточно ресурсоемкий расчет траектории движения зомби который просчитывается циклом for.

Как я понял я не учел того факта, что при выполнении цикла for, сервер будет "стоять" до полного выполнения цикла.
Почитав статьи я понял, что необходимо использовать асинхронную модель программирования основанную на событиях.

Сейчас пытаюсь понять, как правильно организовать данный модуль.
То есть как я понимаю - создаем функцию, в которую передаем уникальный идентификатор, условие, функцию.

Я для теста написал следующий код:

Event = {
    start: function(ID, IF, FUNCTION, CALLBACK, INDEX) {
        var i = !INDEX ? 0 : INDEX;

        FUNCTION(i);
        if (eval(IF)) {
            i++;
            setTimeout(function() {
                Event.start(ID, IF, FUNCTION, CALLBACK, i);
            }, 1);
        }

    }
}

Event.start('fuck1', 'i < 1000', function(i) {
    console.log('test ' + i);
});


Начав выполнять данную функцию без "setTimeout", скрипт висел так же как и при выполнении for. Добавил setTimeout, и функции в скрипте стали выполняться параллельно) Но при этом заметно дольше, чем for.

Меня интересует вопрос, правильно ли я понимаю логику асинхронной работы? Возможно ли как то ускорить процесс?
Может быть есть какие то ню-ансы, которые необходимо учесть)
Буду очень рад любым мыслям и советам!

Заранее спасибо!

Последний раз редактировалось Dorian_bs, 09.01.2014 в 04:23.
Ответить с цитированием