Кажется, arrayOfFiles - это массив обещаний?
Итак, вы ждете, пока все они завершатся, используя $.when
, и так как вы уже используете современный JavaScript, перейдите кдобавьте еще одну «странность», с которой вы, возможно, не знакомы ...
, но это облегчает задачу
Возможно, я неправильно понял то, что вы хотели ждать
groupInstance => {
var groupPromise = groupInstance.promise();
var arrayOfFiles = groupInstance.files();
groupPromise.done(function(fileGroupInfo) {
/* Save group to server using Ajax */
uploadGroup(fileGroupInfo.uuid);
// move the .each code here
$.each(arrayOfFiles, function(i, file) {
file.done(function(fileInfo) {
/* Add image to front-end */
});
});
/* Probably not what you wanted
$.when(...arrayOfFiles).then((...fileInfos) => {
$.each(fileInfos, function(i, fileInfo) {
// Add image to front-end
});
});
// the above 5 lines in old school JS
$.when.apply(null, arrayOfFiles).then(function() {
var fileInfos = [].slice.call(arguments);
$.each(fileInfos, function(i, fileInfo) {
// Add image to front-end
});
});
*/
});
groupPromise.fail(function(error, fileGroupInfo) {
alert('Upload failed');
});
}
...arayOfFiles
... ...
это синтаксис распространения ... так что
$.when(...arrayOfFiles)
похоже на
$.when.apply(null, arrayOfFiles)
и function(...fileInfos)
равно Синтаксис отдыха
function(...fileInfos) {
эквивалентен
function() {
fileInfos = [].slice.call(arguments);
}
, как