图片加载中的异步操作,如何确保顺序

发布于 2022-09-02 15:36:57 字数 1402 浏览 9 评论 0

        if( productImgs.length > 0 )
        {
            for(var i = 0;i < productImgs.length;i++)
            {
                var img = new Image();
                img.onload = function()
                {
                    $slides.append('<div class="col-xs-12"><img class="col-xs-12" src="'+this.src+'" title="'+this.title+' " /></div>');
                    console.log(productImgs.length+''+this.i);
                    if(this.i == productImgs.length-1)
                    {

                        i = null;
                        //图片滑动部分实例化
                        $slides.slidesjs({
                            width: $slides.find("img").width(),
                            height: $slides.find("img").height(),
                            navigation: false
                        });
                        $('.slidesjs-pagination-item').each(function(i, e) {
                            $(e).find('a').html('<span class="pagination-larger">'+(i+1)+'</span>'+ '/'+ productLength);
                        });
                        console.log(132);
                    }
                }
                img.src = productImgs[i].thumb;
                img.title = productImgs[i].title
                img.i =i;

            }

        }

此问题的最终目的是让所有图片都加载完成后进行图片滑动部分实例化,然后目前并不能实现,不知道,这种涉及到图片加载顺序的异步操作该如何实现呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听不够的曲调 2022-09-09 15:36:57

某些地方请允许我简写

if( productImgs.length > 0 )
        {
            for(var i = 0;i < productImgs.length;i++)
            {
                var img = new Image();
                $slides.append('<div class="col-xs-12"></div>');
                function disp(i){
                    return function (){
                        $slides.find('div')[i].append(this);
                    }             
                }
                img.onload = disp(i);
                img.src = productImgs[i].thumb;
                img.title = productImgs[i].title
                img.i =i;

            }

        }
素罗衫 2022-09-09 15:36:57

因为是异步加载,所以有可能加载顺序并不是你所预期的。如果要按照预期的顺序加载,可以改为同步加载。或者增加一个延时代码,在每次加载之后sleep一段时间,确保一张图片加载完再加载下一张。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文