Показать сообщение отдельно
  #7 (permalink)  
Старый 17.07.2018, 13:53
Интересующийся
Отправить личное сообщение для senex Посмотреть профиль Найти все сообщения от senex
 
Регистрация: 09.12.2014
Сообщений: 10

Мало знаком с этим диалектом, но свое мнение выскажу.

Цикл for работает очень быстро, а метод .update() медленно, поскольку пропускается через большую библиотеку. Поэтому цикл for успевает сделать все 10 обновлений prompt.text, пока выполнится 2 или 3 итерация update(). Все последующие итерации update() тоже срабатывают, но этого не видно, поскольку все они показывают последнее 10-е обновление prompt.text.

Оптимальное решение, если update() принимает callback-функцию (нужно смотреть документацию). Тогда .prompt.text каждый раз будет обновляться только после выполнения очередного .update()

for (i = 1; i <= NumOfStrings; i++) {
    var fn = function(i) {
       counter.prompt.text = ("Processed " + i+" / " + NumOfFrames + " frames");
    }  
    counter.update(fn);  
    // Здесь основной цикл
}



Если callback-функции не предусмотрено, то можно использовать setTimeOut или что его заменяет в данном диалекте:

for (i = 1; i <= NumOfStrings; i++) {
    var fn = function(i) {
       counter.prompt.text = ("Processed " + i+" / " + NumOfFrames + " frames");
    }

    setTimeOut(fn, 12);

    counter.update();  
    // Здесь основной цикл
}


Но это конечно хуже. Задержку можно подобрать методом проб. или замерить в консоли время выполнения .update()


Все. Где-то так

Последний раз редактировалось senex, 17.07.2018 в 14:01.
Ответить с цитированием