Я пытаюсь загрузить ряд шаблонов в массив и возникли некоторые проблемы с when
метода JQuery (на основе this answer)Использование JQuery, когда с массивом обещаний
var files = [/*array of file names*/];
var templates = [];
files.forEach(function(file){
templates.push(
$.get('/temps/' + file + '.hbs').then(function(temp) {
console.log('done loading', temp);
})
)
});
$.when.apply($, templates).then(function() {
console.log(arguments); //"undefined"x10
});
Почему не дает массив обещаний when
создать массив из десяти шаблонов? Что здесь не так?
Edit: Видимо, отбрасывая метод then
внутри каждого get
получает меня немного ближе:
templates.push($.get('/temps/' + file + '.hbs'));
Однако мне очень интересно, когда я не могу использовать then
здесь, а также, когда
templates.push($.get('/temps/' + file + '.hbs')[0])
все еще дает мне массив undefined
s. Первым элементом в возвращаемом массиве являются возвращенные данные. Почему не будет толкать этот первый элемент?
Спасибо. Вы видите мое редактирование? Правильно ли это? – 1252748
Это работает очень хорошо. Однако я пытаюсь вернуть эти данные в другую функцию. '$ .when.apply ($, templates) .then (function() { аргументы возврата });' и хранить данные в другой переменной. Итак, например, все ajax будут в функции 'doAjax()', и я пытаюсь сделать var var templatesFromAjax = doAjax() ', но я получаю undefined, когда на следующей строке я делаю' console.log (templatesFromAjax); – 1252748
Да, не используя 'then' на всех тоже правильно. Использование '[0]' не имеет смысла, поскольку обетования не обладают таким свойством. – Bergi