第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

支持事件的圖像預(yù)加載器javascript

支持事件的圖像預(yù)加載器javascript

蕪湖不蕪 2019-08-13 17:16:52
支持事件的圖像預(yù)加載器javascript我正在嘗試找到一個(gè)圖像預(yù)加載器腳本。雖然我發(fā)現(xiàn)了一些,但它們都不支持在預(yù)加載完成時(shí)觸發(fā)的事件。有誰(shuí)知道會(huì)這樣做的任何腳本或jQuery插件?希望這個(gè)問題適合stackoverflow - 如果沒有,請(qǐng)隨時(shí)將其刪除。
查看完整描述

3 回答

?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

這是一個(gè)從數(shù)組中預(yù)加載圖像并在最后一個(gè)完成后調(diào)用回調(diào)的函數(shù):


function preloadImages(srcs, imgs, callback) {

    var img;

    var remaining = srcs.length;

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

        img = new Image();

        img.onload = function() {

            --remaining;

            if (remaining <= 0) {

                callback();

            }

        };

        img.src = srcs[i];

        imgs.push(img);

    }

}


// then to call it, you would use this

var imageSrcs = ["src1", "src2", "src3", "src4"];

var images = [];


preloadImages(imageSrcs, images, myFunction);

而且由于我們現(xiàn)在正處于使用promises進(jìn)行異步操作的時(shí)代,這里是上面的一個(gè)版本,它使用promises并通過ES6標(biāo)準(zhǔn)承諾通知調(diào)用者:


function preloadImages(srcs) {

    function loadImage(src) {

        return new Promise(function(resolve, reject) {

            var img = new Image();

            img.onload = function() {

                resolve(img);

            };

            img.onerror = img.onabort = function() {

                reject(src);

            };

            img.src = src;

        });

    }

    var promises = [];

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

        promises.push(loadImage(srcs[i]));

    }

    return Promise.all(promises);

}


preloadImages(["src1", "src2", "src3", "src4"]).then(function(imgs) {

    // all images are loaded now and in the array imgs

}, function(errImg) {

    // at least one image failed to load

});

而且,這是一個(gè)使用2015 jQuery承諾的版本:


function preloadImages(srcs) {

    function loadImage(src) {

        return new $.Deferred(function(def) {

            var img = new Image();

            img.onload = function() {

                def.resolve(img);

            };

            img.onerror = img.onabort = function() {

                def.reject(src);

            };

            img.src = src;

        }).promise();

    }

    var promises = [];

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

        promises.push(loadImage(srcs[i]));

    }

    return $.when.apply($, promises).then(function() {

        // return results as a simple array rather than as separate arguments

        return Array.prototype.slice.call(arguments);

    });

}


preloadImages(["src1", "src2", "src3", "src4"]).then(function(imgs) {

    // all images are loaded now and in the array imgs

}, function(errImg) {

    // at least one image failed to load

});


查看完整回答
反對(duì) 回復(fù) 2019-08-13
  • 3 回答
  • 0 關(guān)注
  • 440 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)