2015-09-04 158 views
0

節點的fs.exists函數不遵循通常的回調函數回調函數只獲取帶有true或false的參數,而不是通常的錯誤和結果。正因爲如此,我無法弄清楚如何在sync.await中使用它。如何將節點的fs.exists與synchronize.js結合使用?

有沒有簡單的方法來使用sync.await與不遵循正常節點回調約定的函數?

此代碼:

var alreadyExists = sync.await(fs.exists(fileName, sync.defer())); 

導致錯誤:

Error: done() invoked with non-Error: true

因爲sync.defer()代替錯誤的得到了一個布爾值。

注意:是的,fs.exists將來會被棄用。這是一個不同的話題。

+0

僅供參考,請參閱討論[這裏](https://開頭的NodeJS .org/api/fs.html#fs_fs_exists_path_callback)有關如何使用fs.exists()是一個充滿併發問題的反模式。 – jfriend00

回答

2

您可以從延遲迴調,其中err參數(第一個)是預填充作爲null創建partial function

var defer   = sync.defer(); 
var alreadyExists = sync.await(fs.exists(fileName, defer.bind(defer, null))); 
+0

這個小片段會讓我有點消化,但謝謝! –

相關問題