2014-03-26 40 views
7

通過Node中的約定,異步回調接受錯誤作爲其第一個參數。如果成功,第一個參數不能出現。我個人用來寫Node.js中的語言成功回調

callback(undefined, result); 

在這種情況下。但是,我在其他人的代碼中看到

callback(null, result); 

盛行。它是否在任何地方「正式」記錄?這兩個選項中哪一個是慣用節點?有沒有什麼重要的理由可以相互比較?

+0

如果回調遵循檢查該參數的慣用方法(即'if(error)'或'if(!error)'),那麼它沒有任何區別。如果回調堅持嚴格檢查(例如'error === null'或'error!== undefined'),那麼您必須首先傳遞它期望的值。 –

+0

是的,這更像是你如何定義undefined和null的含義。 –

回答

9

如果我們將「慣用節點」解釋爲「節點本身是什麼」,那麼null就是慣用的。如果在節點提示(* nix的機器上)鍵入此,你會得到true

require("fs").readFile("/dev/null", function (err) { console.log(err === null) }) 

我與其他回調從fs模塊嘗試,得到了相同的行爲。我還沒有在使用回調的Node API中測試所有位置。

我還沒有發現,指出節點必須在這種情況下設置errnull參考。

+0

當你可以看看Node.js源代碼包(或GitHub)的'lib /'文件夾中的任何這些模塊的源代碼時,我沒有理由對它進行測試。 –

0

如果有錯誤,undefinednull總是被認爲是相同的。

你可以使用它們兩個。人們只使用null,因爲它更短。

如果您正在檢查錯誤,則可以使用if (err == null) { ... }方法在一條語句中檢查null和undefined。