То, что я пытаюсь сделать, это «подключить» массив функций вместе с функцией. Таким образом, в массиве функций:функции цепочки с аргументом функции
var functionArray = [functionA, functionB, functionC];
functionA(next)
должны иметь возможность ссылаться на вызов его аргумента функции next
вызвать functionB
.
Проблема заключается в том, что я не могу использовать обещания (было бы сделать это намного проще, неудачно), так что я придумал способ, как это:
var functionArray = [functionA, functionB];
functionArray.push(functionC.bind(undefined, args));
for (var i = functionArray.length - 1; i-- > 0;) {
functionArray[i] = functionArray[i].bind(undefined, args, functionArray[i + 1]);
}
functionArray[0]();
Мой вопрос, является ли или не есть лучший способ для выполнения этого, так как вышеупомянутая функция выглядит ужасно хакерской. Может быть, что-то с Array.prototype.reduce?
Не могли бы вы описать проблему, которую вы пытаетесь решить; смысл, для какой проблемы это решение? Почему вы не можете использовать обещания? Я не понимаю, чего вы пытаетесь достичь. – Mathletics
Непонятно, что вы спрашиваете или чего хотите достичь. Является ли результатом функции A аргумент функции B или вызван функцией B из области действия функции A? – webduvet
Предполагается, что функции позволяют асинхронно связывать функции друг с другом, поэтому в конечном итоге я хочу иметь функцию, которая превращает массив в функции, которые могут это сделать; 'function functionA (next) { // dosomething next(); // вызывает функцию B, не переданные значения, просто выполнение } функция functionB (next) { // dosomethingelse next(); // вызывает functionC и т. д. ... } ' –