JS / JQuery передачи элементов массива - PullRequest
2 голосов
/ 16 декабря 2011

Привет, ребята, мне нужна помощь здесь, к моему плохому мышлению:

У меня есть объект:

 var ch =  [function1(), function2(), function3(), function4()];

пример функции:

function function1()
            { 

                    return $.ajax({
                        type: "GET",
                        url:url,
                        dataType:"jsonp",
                        success: function(data){}
                    });
            }

Мне нужно как-то передать этот объект здесь:

$.when(function1(), function2(), function3(), function4()).done({
  function(data1, data2, data3, data4)
});

конечно, эта идея ошибочна:

$.when(ch) -- which is wrong 

Вы можете помочь с этим? Или может это неправильный способ сделать? Вы можете посоветовать мне?

Спасибо!

1 Ответ

4 голосов
/ 16 декабря 2011

Я думаю, вы хотите сказать, что хотите выполнить действие, когда все элементы Deferred в массиве разрешены.Это очень просто, используя метод apply, который использует члены массива в качестве аргументов, данных функции:

$.when.apply($, ch).done(function(data1, data2, data3, data4) {

См. apply в документах MDN длябольше информации о методе.Вкратце, первый аргумент - это контекст вызова (т. Е. Что будет this внутри функции; здесь вы хотите сохранить его как $, объект jQuery), а второй - массив, члены которого будут примененыв качестве аргументов функции.

...