Async: Passar argumentos para a primeira função em cascata?

Criado em 25 fev. 2011  ·  9Comentários  ·  Fonte: caolan/async

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.

Comentários muito úteis

async.waterfall([
    async.apply(func1, "1")
], function (err, result) {

});

function func1(par1, callback) {
    console.log(par1); // Outputs: 1
}

Todos 9 comentários

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

Esta página foi útil?
0 / 5 - 0 avaliações