2013-07-27 2 views
0

Я пробовал много использовать библиотеку aync в nodejs, но мой самый простой тест даже не работает.Я не получил асинхронную библиотеку для node.js, где я ошибаюсь?

var async = require('async'); 

var i = 0 ; 

var inc = function(){ 
    i++; 
} ; 

var show = function(){ 
    console.log(i) ; 
} ; 

var err = function(err){ 
    console.log(err) ; 
} ; 

async.forever(inc,err) ; 
async.forever(show,err) ; 

Функция не петлю на всех, и выход только

1 

Что я doint неправильно пожалуйста.

ответ

6

async.forever() пропускает callback к show и inc, что им нужно позвонить:

var inc = function(done){ 
    i++; 
    setImmediate(done); 
}; 

var show = function (done) { 
    console.log(i); 
    setImmediate(done); 
}; 

Использование setImmediate (или setTimeout) делает асинхронный вызов, так что вы не получите ошибку переполнения стека:

var inc = function(done){ 
    i++; 
    done(); 
}; 
RangeError: Maximum call stack size exceeded 

var inc = function(done){ 
       ^

И, имейте в виду, что async li brary не делает задачи асинхронными; он предполагает, что задачи уже асинхронны и просто помогают им управлять. Использование синхронных задач с async будет по-прежнему блокироваться в большинстве случаев.

+0

Ты потрясающий, он работает, и я понимаю, почему, спасибо за объяснение. –

Смежные вопросы