Снова о функции с переменным кол-во аргументов
Сразу скажу что найти ответ пытался, но этот вопрос можно сформулировать очень разнородно, потому мог и пропустить решение, если таковое имеется. :)
Допустим, работаем с функцией $.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] ....) :help: |
aleksp, эх, я тут такие красивые слайды про ECMAScript 6 посмотрел. Там так красиво это делалось! А вам - придётся вот так вот:
$.when.apply($, dfds); |
trikadin,
Ага, новенький синтаксис там очень приятный ) |
... мде, позор на мою голову.
Я, кстати, вот сейчас такое придумал
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() {});
}();
Суть та же, но через задницу :)) |
Цитата:
Цитата:
|
Не люблю сахар.=\
А может я просто ортодокс... |
Цитата:
Хотя деструктуризация в любом случае хорошая штука. И let. |
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() {});
}();
|
devote, ты это к чему? И ошибка, к тому же) Ты jquery подключить забыл)
А, я понял. Да забей. Некропост уже. |
Цитата:
|
| Часовой пояс GMT +3, время: 16:35. |