Javascript Image Preloader内存泄漏

时间:2015-01-19 09:28:40

标签: javascript ios memory-leaks

我有一个JS函数来预加载一组图像,然后将这些图像存储在一个数组中,并在触发时最终绘制到画布上。我在iPad和较旧的iPhone上存在一些内存大小问题。因此,一旦加载了一定数量的图像,该应用就会变成一个洞穴。从而让我认为问题在于预装载器。

如果有人能够对此有所了解或指出我的任何方向,我会很感激。

canvas.preload = function(images){

  var
  d = $.Deferred(),
  // Empty Array
  a = [];

  // For each image in batch
  _.each(images, function( val, i) {

    var img = new Image();

    img.onload = function(){

      // Push Image and index into array
      a.push({image:this, index:i});

      // Sort this array by the index
      var sortedArray = _.sortBy(a, 'index');

      // When total batch is loaded return it
      if (a.length === images.length) {
        // Pluck just image from array
        d.resolve(_.pluck(sortedArray, 'image'));
      }

    }

    img.src = images[i];

  });

  return d;

} // preload();

1 个答案:

答案 0 :(得分:0)

此处的问题是由移动设备设置的内存限制。

您的图片可能太大。而对于大的,它可以是维度明智或咬合。问题是他们不会以任何方式提醒您:他们根本就不会下载

在这些情况下,最佳方法始终根据设备提供不同的资产。 因此,例如,如果客户端正在使用移动设备,请尝试下载较小版本的图像。