我正在开发一个闪存卡网页,并且我想知道预加载的图像何时加载或遇到错误。一旦我掌握了每张图片的状态,我会采取一些行动。当使用延迟解析()和when()时传递参数
我基础上的计算器后Wait for image to be loaded before going on
function loadSprite(src) {
var deferred = $.Deferred();
var sprite = new Image();
sprite.onload = function() {
deferred.resolve();
};
sprite.src = src;
return deferred.promise();
}
我的代码和功能加载精灵
var loaders = [];
loaders.push(loadSprite('1.png'));
loaders.push(loadSprite('2.png'));
loaders.push(loadSprite('3.png'));
$.when.apply(null, loaders).done(function() {
// callback when everything was loaded
});
我已经修改了loadSprite决心返回状态的结果:
deferred.resolve("STATUS RESULT");
和
$.when.apply(null, loaders).done(function("STATUS RESULT") {
// callback when everything was loaded
//Do something with "STATUS RESULT"
});
的问题是,我不能分离出“状态结果”为loaders.push(loadSprite(file to load));
每个呼叫也就是说我只得到一个变量回不是一个为loadSprite
每个呼叫我没想到我的上述代码去工作,这更多的是向我自己证明我可以回传。
我无法解决这个问题,感谢所有的帮助。谢谢,
谢谢jAndy。正如您所描述的,当图像预加载时,我的互联网连接中断时,我遇到了错误情况。如何使用(在一个functon中有两个解决方案有问题)取1为没有错误,0代表错误和代码:'sprite.onload = promise.resolve.bind(null,1);'''sprite .onerror = promise.resolve.bind(null,0);'然后我将逐个文件地处理结果。再次谢谢你。 – user1558796 2013-02-26 12:39:42
@ user1558796:是的,你当然可以这样做。如果你想*手动*处理这些加载状态的结果。另一方面,您也可以在'.when()'调用中调用'.fail()'来捕获错误。但是这样做,在出现错误的情况下,它仍然不会执行'.done()'处理程序。所以'它可能是一个好主意。解决()'承诺的方式,并通过不同的状态。 – jAndy 2013-02-26 12:49:36
谢谢jAndy。只是现在才回复你的道歉,我刚刚第一次有机会使用你的解决方案。如果我使用'sprite.onload = promise.resolve.bind(null,1);'返回1成功,当我'console.log(参数[..]);'我得到** 1,[对象事件] **。我需要做些什么来删除_,[对象事件] _以便我可以使用数字响应?非常感谢您的协助 – user1558796 2013-03-03 13:02:10