У меня есть глобальный var var imageURL = jQuery.Deferred();
как отложенный объект.Использование jQuery отложенных() и разрешать внутри функции, которая находится в цикле
Далее У меня есть функция, которая проходит через цикл, и для каждого цикла я намерен получить значение, которое создается через асинхронную функцию. Проблема была в том, что я не мог правильно получить значения, поскольку они вызывались до того, как функция вернула их значение, поэтому мне сказали использовать jQuery отложенным. совсем не могу получить мою голову вокруг него:
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() продолжает показывать один и тот же путь к файлу, как если бы он переписывал каждый.
Любая помощь будет оценена по достоинству.
Вы пытаетесь решить один и тот же отложенный объект более одного раза? отложенные объекты могут быть разрешены только один раз. –
Да, я делаю это, не понял, что вы можете отложить только один объект. Что было бы подходящим обходным решением? – JamesG
В вашем случае было бы разумнее использовать либо настраиваемое событие, либо объект '$ .Callbacks'. –