Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2011, 21:46
Новичок на форуме
Отправить личное сообщение для aleksp Посмотреть профиль Найти все сообщения от aleksp
 
Регистрация: 15.12.2011
Сообщений: 9

Снова о функции с переменным кол-во аргументов
Сразу скажу что найти ответ пытался, но этот вопрос можно сформулировать очень разнородно, потому мог и пропустить решение, если таковое имеется.

Допустим, работаем с функцией $.when( arg1, arg2, ...., argn ) библиотеки jQuery. Далее, имеем такой массив: dfds = array(dfd1, dfd2, ..., dfdn), где dfdn - это deferred-объекты;

Задача: как передать одновременно все dfdn-объекты в функцию $.when()? Понятно, что прямой подход $.when(dfds[1], dfds[2] ....) нелеп, поскольку неизвестно сколько будет тех самых dfdn.

Вообщем, тот массив объектов необходимо преобразовать во что-то, что можно было бы передать в функцию $.when(), причем так, как будто бы вызов был произведен в обычном виде.

array(dfd1, dfd2, ..., dfdn) => ?????
????? => $.when(????)
$.when(????) === $.when(dfds[1], dfds[2] ....)

Ответить с цитированием
  #2 (permalink)  
Старый 15.12.2011, 22:03
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

aleksp, эх, я тут такие красивые слайды про ECMAScript 6 посмотрел. Там так красиво это делалось! А вам - придётся вот так вот:

$.when.apply($, dfds);
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2011, 22:11
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

trikadin,
Ага, новенький синтаксис там очень приятный )
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #4 (permalink)  
Старый 15.12.2011, 22:16
Новичок на форуме
Отправить личное сообщение для aleksp Посмотреть профиль Найти все сообщения от aleksp
 
Регистрация: 15.12.2011
Сообщений: 9

... мде, позор на мою голову.
Я, кстати, вот сейчас такое придумал
var result = function()
                        {
                            for (var i = 0; i < dfdArray.length; i++)
                            {
                                Array.prototype.push.call(arguments, dfdArray[i]);
                            }

                            return $.when.apply({}, arguments)
                                .done(function() { if (!options.silent) self.fireEvent('change', self); })
                                .fail(function() {});
                        }();


Суть та же, но через задницу )
Ответить с цитированием
  #5 (permalink)  
Старый 15.12.2011, 22:22
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от Nekromancer
Ага, новенький синтаксис там очень приятный )
Сахара куча)

Сообщение от aleksp
Суть та же, но через задницу )
Мы не ищем лёгких путей, это называется.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2011, 00:57
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Не люблю сахар.=\
А может я просто ортодокс...
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2011, 01:05
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от Aetae
Не люблю сахар.=\
А может я просто ортодокс...
Всё может быть. Но вообще, я сегодня задумывался о том, что это не так наглядно, как обычные function и т.д.

Хотя деструктуризация в любом случае хорошая штука. И let.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2011, 01:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

var result = function() {
    for (var i = 0; i < dfdArray.length; i++) {
        Array.prototype.push.call( arguments, dfdArray[i] );
    }

    return $.when.apply({}, arguments)
        .done(function() {
            // if (!options.silent) self.fireEvent('change', self); // зачем это?
            if ( !options.silent ) $( self ).change();
        }).fail(function() {});
}();
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2011, 01:40
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

devote, ты это к чему? И ошибка, к тому же) Ты jquery подключить забыл)

А, я понял. Да забей. Некропост уже.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #10 (permalink)  
Старый 16.12.2011, 01:42
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от trikadin
Ты jquery подключить забыл)
Да это у меня привычка уже run добавлять
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли узнать имена входящих аргументов функции? FINoM Общие вопросы Javascript 27 02.05.2011 22:42
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21