Não parece ser possível passar argumentos para a primeira função em cascata.
Isso poderia ser feito de outras maneiras, porque eu realmente preciso do primeiro para obter algumas variáveis.
Defina uma função fictícia que chame sua função com as variáveis de que você precisa. Assim:
async.waterfall ([
function(cb)
{
cb(null, username, password);
},
Authenticate,...
Grande hack =)
Uma alternativa é usar async.apply (autenticar, nome de usuário, senha) para vincular os argumentos antecipadamente.
async.waterfall([
async.apply(func1, "1")
], function (err, result) {
});
function func1(par1, callback) {
console.log(par1); // Outputs: 1
}
@adisos obrigado! +1
Hmmm ... Ótimos hacks, sério ... Eu também fiquei intrigado por não ser capaz de passar parâmetros para a primeira função em cascata ... Mas, isso não deveria ser postar para o autor do módulo (caolan) como um bug / inconsistência? Toda a limpeza desse método desaparece, com esses hacks ...: - /
Este é o uso pretendido para esses métodos. async.apply foi adicionado principalmente para este caso de uso AFAIK
A documentação dá exemplos de uso de cascata com uma função, no entanto, se alguém quiser alterar o leia-me para mostrar o uso de cascata com aplicar, isso seria fantástico
: +1: @adisos aplicar é ótimo! Estou usando essa biblioteca há pouco tempo e estou continuamente impressionado.
se alguém ainda tiver esse problema, a função constante funciona muito bem.
async.waterfall([
async.constant(42),
function (value, next) {
// value === 42
},
], callback);
Para obter mais informações, consulte http://caolan.github.io/async/docs.html#.constant
Comentários muito úteis