2015-11-16 4 views
0

Я загружаю изображения динамически внутри цикла. У меня есть некоторое требование, чтобы в следующем коде, когда я загружаю изображение, а затем только предупреждающий огонь и когда предупреждение 1 срабатывает тогда а затем только предупредить 2 огня.

Мой код

for(int i=0;i<5;i++) 
    { 
    $.when(function(){ 

    var img771 = new Image(); 

    img771.src = imggg[i]; 
    img771.onload=function(){ 
     alert("1"); 
     //after image becomes loaded then and then only alert 2 fires in Done functionality. 
    } 


    } ).done(function() { 
     alert("2"); 

    }); 
    } 
+0

Как вы можете ожидать, что кто-нибудь поможет, когда ваш код станет неразборчивым, а ваша проблема плохо описана? – Alnitak

+0

@Alnitak Зачем беспокоиться о том, чтобы сделать вопрос приятным, кто-то отредактирует его наверняка :) – dfsq

+0

@dfsq ну это не будет я ... – Alnitak

ответ

1

Чтобы преобразовать загрузку изображений в (JQuery) обещание, использование:

function imageLoad(url) { 
    return $.Deferred(function(def) { 
     var img = new Image(); 
     img.onload = function() { 
      def.resolve(img); 
     }; 
     img.src = url; 
    }); 
} 

Вы можете создать массив Promises для ваших изображений:

var promises = imggg.map(imageLoad); 

, а затем передать это $.when:

$.when.apply($, promises).then(function() { 
    console.log("all images loaded"); 
}); 
+0

на самом деле я не понимаю, что ** imggg ** ?? –

+0

и как я могу передать url этой функции –

+0

Фактически я получил то, что imggg, но ваш код также не работает для меня. –

Смежные вопросы