Javascript图像预加载程序内存泄漏

Javascript图像预加载程序内存泄漏,javascript,ios,memory-leaks,Javascript,Ios,Memory Leaks,我有一个JS函数来预加载一组图像,这些图像随后存储在一个数组中,并在触发时最终绘制到画布上。我对iPad和旧版iPhone的内存大小有一些问题。一旦加载了一定数量的图像,应用程序就会研磨成一个holt。因此,我认为问题在于预加载程序 如果有人能够阐明这一点或指出我的任何方向,我将不胜感激 canvas.preload = function(images){ var d = $.Deferred(), // Empty Array a = []; // For each i

我有一个JS函数来预加载一组图像,这些图像随后存储在一个数组中,并在触发时最终绘制到画布上。我对iPad和旧版iPhone的内存大小有一些问题。一旦加载了一定数量的图像,应用程序就会研磨成一个holt。因此,我认为问题在于预加载程序

如果有人能够阐明这一点或指出我的任何方向,我将不胜感激

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();

这里的问题是由于移动设备设置的内存限制

您的图像对它们来说可能太大了。对于大的,它可以是维度方面的,也可以是咬合方面的。问题是他们不会以任何方式提醒你:他们只是从不下载它们

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

Hi Stefano,谢谢您的回复。我应该提到的是,我根据平台提供不同规模的资产。共3个尺寸;台式机、平板电脑和手机。