2011-12-15 6 views
2

Привет ребята мне нужна помощь здесь, на мой плохой мыслящем мозгу:JS/JQuery передавая элементы массива

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

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 

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

Спасибо!

+0

являются 'function1(), function2() ... и т. Д. Результаты вызова этих функций? Вернули ли они ['DeferredObject'] (http://api.jquery.com/category/deferred-object/)? – zzzzBov

+0

да, все функции возвращают объект данных, я обновил свой пример: – AlexC

ответ

4

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

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

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

+0

блестящий !!! Спасибо! – AlexC

Смежные вопросы