javascript - 在 javascript 中使用 $.each 和 new Image() 时顺序不一致

标签 javascript jquery

不确定我是否误用了 new Image(),我使用下面的代码遇到了 json 对象的奇怪对象顺序。

 $.ajax({
      type: 'GET',
      url: '/' + getUsername() + '/photos',
      success: function(data) {

        if (data.length > 0) {
          $.each(data, function() {

            var caption = this.caption
            var albumPhoto = '';

            albumPhoto = 'http://example.com/' + this.photo;

            var temp_img = new Image(),
              albumPhotoWidth, albumPhotoHeight

            temp_img.src = albumPhoto;
            temp_img.onload = function() {


              var photosObj = {
                src: albumPhoto,
                title: caption,
                w: this.naturalWidth,
                h: this.naturalHeight
              };

              pswpAlbum_Items.push(photosObj);

            }
          });
        }

      }
    });
    }

pswpAlbum_Items 结果不一致,我的照片顺序不一致,当我尝试在私有(private)模式下浏览器永远不会获取缓存图像时,我发现了这个错误。知道为什么吗?

最佳答案

您的图像可能在不同时间加载。您应该考虑将它们添加到 onload 事件的数组 outside 中,或者使用对象作为映射,并使用回调中的 index 参数每个

关于javascript - 在 javascript 中使用 $.each 和 new Image() 时顺序不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40466325/

相关文章:

javascript - 在 Angular 转发器中对动态数组使用拼接

Javascript 将字符串拆分为多个对象属性

javascript - 如何避免node.js的异步行为?

javascript - 动态更改 React jsx 类,无需 DOM 操作

运行后添加 div 标签时,Javascript 无法在 div 标签中工作

javascript - 如何使用javascript中选中的复选框将表行附加到一个表到另一个表

javascript - 从选定行表绘制 Highcharts 的问题

javascript - Travis CI 在 Node Jasmine 测试中超时,但在本地通过

javascript - 使用 JavaScript 添加和删除分区

javascript - map jquery上的整个页面刷新