У меня есть некоторый код, как это:Node.js и Q Promises: Как я могу передать параметры более чистым способом?
function example(data){
asyncFnOne()
.all([asyncFnTwo(), data])
.spread(asyncFnThree)
.done();
};
Это не имеет значения, что эти функции делают. Проблема заключается в том, что я не знаю, как asyncFnThree может получить доступ к данным asyncFnTwo и от параметров функции. То, как я решил проблему, не очень читаемо. Есть ли рекомендуемый способ сделать это чистым способом?
Второй возможный soultion бы
function example(data){
asyncFnOne()
.then(asyncFnTwo)
.then(function(result){
asyncFnThree(result, data);
})
.done();
};
};
Но я думаю, что это еще менее читаемым.
Вы имели в виду 'Q.all ([asyncFnOne(), data]). Spread (asyncFnTwo) .done()'? Насколько я знаю, Q-обещания не имеют метода '.all()', и, конечно же, никто не принимает функции обратного вызова * и *. – Bergi
Да, вот что я имел в виду. Сожалею. – Josh
Обратите внимание, что ваш второй фрагмент совсем другой, он ждет с вызовом 'asyncFnTwo (...)' для первого обещания и передает его значение, в то время как ваш первый фрагмент вызывает 'asyncFnTwo()' немедленно и без аргументов. Какое поведение вы хотите? – Bergi