[英]Should a callback be passed null or undefined when there is no error?
我希望這是一個簡單的問題。 哪個是回調的公認最佳實踐?
選項1:
function get (id, callback) {
var topic = find(id);
var err = new Error('Sorry, ' + id + ' is not a valid id.');
err.status = 404;
return (topic) ? callback(null, topic) : callback(err);
}
選項 2:
function get (id, callback) {
var topic = find(id);
var err = new Error('Sorry, ' + id + ' is not a valid id.');
err.status = 404;
return (topic) ? callback(undefined, topic) : callback(err);
}
旁注, find() 返回undefined ,而不是null 。
提前致謝。
我會做 Node 內置 API 函數所做的事情。
一個微不足道的實驗告訴我:
成功時open
通過null
表示err
。
open
在失敗時為 data 參數傳遞null
。
其他幾點:
你的代碼總是在構造一個Error
對象,即使一切正常。 我不會那樣做,沒有意義。
您的代碼正在返回調用回調的結果。 這是不尋常的。
據我所知,您的代碼正在同步調用回調。 (例如,當調用get
,回調將在get
返回之前發生。)通常,異步調用是異步調用。 如果您正在同步處理,例如openSync
等,請將Sync
放在名稱上並直接返回值,而不是調用回調。
傳遞null作為參數停用默認參數值機制。 如果回調函數具有默認參數值並且您為空參數發送null ,則回調函數將使用null ,而不是參數的默認值。
function multiply(a=1, b=1){ return a*b; } console.log(multiply(undefined, 2)); console.log(multiply(null, 2));
約定為null
如下所示: https : //docs.nodejitsu.com/articles/errors/what-are-the-error-conventions 。
正如@TJ Crowder 在評論中所說,如果錯誤不會被發回,請不要構建錯誤。
function get (id, callback) {
var topic = find(id);
if (topic) {
return callback(null, topic);
}
var err = new Error('Sorry, ' + id + ' is not a valid id.');
err.status = 404;
return callback(err);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.