Перебор свойств объекта с задержкой на каждой итерации

#javascript #object

#javascript #объект

Вопрос:

Это мой код:

 maleBackNoZoom = {  
    parts:{
    armsRight: findItemById("29") ,
    armsLeft: findItemById("28"),
    legsRight: findItemById("21"),
    legsLeft: findItemById("22"),
    back: findItemById("24"),
    buttocks: findItemById("23"), 
    neck: findItemById("26"),
    head: findItemById("27")
     },

     illuminate: function() {
    for (prop in maleBackNoZoom.parts) {

         maleBackNoZoom.parts[prop].opacity = 1;
         paper.view.update();
    }
}       
}
  

Я перебираю все parts и пытаюсь установить их opacity=1.

Итак, эти команды:

 maleBackNoZoom.parts[prop].opacity = 1;
paper.view.update();
  

должен вызываться каждые n секунд

Как я могу добавить задержку на каждой итерации?


Примечание: Я, конечно, прочитал весь вопрос о задержке итераций в javascript, но большинство из них имеют отношение к массивам, а не к обходам свойств объекта

Ответ №1:

Вы можете создать список свойств, которые вы хотите осветить. Затем обработайте подсветку точно так же, как вы бы делали для массива.

 illuminate: function() {
    var propertiesToIlluminate = [], prop, illuminateInternal, i = 0, delay = 1000, intervalId;
    for (prop in maleBackNoZoom.parts) {
        propertiesToIlluminate.push(prop);
    }

    illuminateInternal = function () {
        var property = propertiesToIlluminate[i];
        maleBackNoZoom.parts[property].opacity = 1;
        paper.view.update();
        i  ;
        if (i === propertiesToIlluminate.length) {
            clearInterval(intervalId);
        }
    };
    intervalId = setInterval(illuminateInternal, delay);
}
  

Комментарии:

1. возможно ли иметь функцию illuminateInternal как часть объекта maleBackNoZoom, чтобы я мог повторно использовать объект с другим именем и разными частями?