2011-12-23 27 views
1

我想控制我的Node.JS模塊調用asyncblock的代碼流,它使用光纖。 我覺得我有一些truble瞭解它的行爲,下面這段代碼不起作用,流動不候..添加flow.add()(asyncblok模塊的東西)在Node.JS回調裏面

person.save(function(err){ 
    if(err) throw err; 
    flow.add('goOn'); 
}); 
flow.wait('goOn'); 

但這個效果很好:

person.save(flow.add('goOn')); 
flow.wait('goOn'); 

什麼我做錯了?

這是完整的代碼:http://pastebin.com/UCsqPNiF

回答

1

這就是爲什麼你的例子不工作:

的第一個操作是異步的,所以在運行的第一件事就是flow.wait電話。由於flow.add尚未被調用,所以實際上並沒有等待。

請注意,您的示例工作是使用asyncblock的正確方法。我正在改變asyncblock,這會使得更異常地添加任務變得更加自然,但是對於這個例子來說這不是必須的。

+0

謝謝,我也懷疑這個..我會密切關注你的真棒模塊。 – 2011-12-23 15:21:34

0

我不能說我以前用過asyncblock,但它看起來象add()方法返回的回調,你將需要執行。

person.save(function(err){ 
    if(err) throw err; 
    flow.add('goOn')(); // Execute the callback! 
}); 
flow.wait(); // wait() takes no arguments. 
+0

flow.wait()可以參見https://github.com/scriby/asyncblock中的參數。而你的方式無法正常工作。 – 2011-12-23 10:53:59

+0

它只是默默地失敗了嗎?你不會讓我繼續下去。該頁面上的哪個位置表示等待需要參數? – loganfsmyth 2011-12-23 14:47:14