Sprawdź, czy obrazy załadowane dynamicznie są kompletne

Mam kod, który wysyła do skryptu php, który odczytuje wszystkie pliki w folderze i zwraca je, wszystkie są img, jquery analizuje informacje, na var to tablica każdy obraz jest zapisywany jako obiekt img z src , width, height i attr, na zakończonym sukcesem chcę sprawdzić, czy każdy obraz jest załadowany, a następnie w końcu wykonać pełną funkcję i usunąć div. Ale nie wiem, jak sprawdzić, czy obraz został załadowany w całości, oszukiwałem z .complete, ale nigdy nie wydaje się, aby go załadować, funkcja wywołuje go, dopóki img nie zostanie załadowany, a następnie zwraca true, aby mógł zachować chodzenie. Oto kod, jest trochę bałaganiarski i prawdopodobnie nie jest to miłe kodowanie.

var gAllImages = [];
function checkFed()

{
    var leni = gAllImages.length;   
    for (var i = 0; i < leni; i++) {


        if (!gAllImages[i].complete) {
            var percentage = i * 100.0 / (leni);
            percentage = percentage.toFixed(0).toString() + ' %';
            console.log(percentage);
            //  userMessagesController.setMessage("loading... " + percentage);
            checkFed();

            return;

        }

    //userMessagesController.setMessage(globals.defaultTitle);
    }
}


 if($('slideshow')){
 var topdiv = '<div id="loading"><div class="centered"><img src="/karlaacosta/templates/templatename/images/ajax-loader.gif" /></div> </div>';
    $('#overall').append(topdiv);
    //console.log('alerta');
    var jqxhr = $.post('http://localhost/karlaacosta/templates/templatename/php/newtest.php', function(data){



        var d = $.parseJSON(data);
        //console.log(d[1]);



        if(typeof(d) == 'object' && JSON.parse){
            var len = d.length;
            //console.log(len);



            for(var i = 0; i < len; i++){
                var theImage = new Image();
                var element = d[i].split('"');
                //        console.log(element);
                //      console.log(element[4]);
                theImage.src = '/karlaacosta/images/Fotografia/TODO'+element[0];
                theImage.width = element[2];
                theImage.height = element[4];                   
                theImage.atrr = element[6];
                gAllImages.push(theImage);

            }





        // console.log(html);
        }else{
            console.log('error');
        }
    }).success(function (){




    setTimeout('checkFed', 150);




    }).error(function(){
        var err = '<div id="error"><h2>Error: Lo sentimos al parecer no se pueden cargar las imagenes</h2></div>';
        $('#loading').append(err);

    }).complete(
        function(){
            var len = gAllImages.length;
            var html = '<ul class="slides">'    
            for(var i = 0; i < len; i++){
                html += '<li><img src="'+gAllImages[i].src+'" width="'+gAllImages[i].width+'" height="'+gAllImages[i].height+'" attr="'+gAllImages[i].attr+'" /></li>';


            }
            html += '</ul>';
            $('#slideshow').append(html);
        }
        );
 jqxhr.complete(function(){
    //
    imageSlide();
    $('#loading').remove();
    //
    console.log('completed');
});
}

Jeśli usuwam rekursywność checkFed (), oczywiście skrypt się kończy i kiedy obrazy są umieszczane w html są ładowane szybko i szybko, czy w pamięci podręcznej nigdy nie są ładowane? wszelkie inne sugestie dotyczące innych części kodu są również mile widziane.

questionAnswers(2)

yourAnswerToTheQuestion