我有一个全局变量var imageURL = jQuery.Deferred();
作为延迟对象。
接下来我有一个通过循环运行的函数,对于每个循环,我打算获取通过异步函数产生的值。我遇到的问题是我无法正确获取值,因为在函数返回它们的值之前调用它们,所以我被告知使用 jQuery deferred。无法完全理解它:
downloadProductImage: function(remoteImage, localImageName){
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
fileSystem.root.getFile(localImageName, {create: true, exclusive: false}, function ff1(fileEntry) {
var localPath = fileEntry.fullPath;
var ft = new FileTransfer();
ft.download(remoteImage,
localPath, function (entry) {
imageURL.resolve(entry.fullPath);
//return entry.fullPath;
}, fail);
}, fail);
}, fail);
}
downloadProductImage 函数是循环执行的,在调用这个函数之后我希望得到 imageURL.resolve(entry.fullPath) 的值,所以我这样做了:
//start loop
imageURL.done(function(theURL){
alert(theURL);
});
//end loop
如果我理解正确,则运行文件下载的回调,并在完成后执行 imageURL.done()。但是 done() 一直显示相同的文件路径,就好像它正在覆盖每个文件一样。
任何帮助,将不胜感激。