2014-03-26 10 views
7

Gemäß Konvention in Node akzeptiert ein asynchroner Rückruf einen Fehler als erstes Argument. Im Erfolgsfall darf das erste Argument nicht vorhanden sein. Ich persönlich schriebIdiomatischer erfolgreicher Rückruf in Node.js

in diesem Fall. Allerdings sehe ich in anderen Menschen Code

callback(null, result); 

vorherrschenden. Ist es irgendwo "offiziell" dokumentiert? Welche der beiden Optionen ist idiomatischer Knoten? Gibt es irgendwelche wichtigen Gründe, einen vor dem anderen zu bevorzugen?

+0

Wenn der Callback der idiomatischen Art der Überprüfung dieses Arguments folgt (d. H. 'If (Fehler)' oder 'if (! Error)'), dann macht das keinen Unterschied. Wenn der Callback auf einer strengen Überprüfung besteht (z. B. "error === null" oder "error! == undefined"), müssen Sie den erwarteten Wert an erster Stelle übergeben. –

+0

Ja, das ist mehr wie, wie Sie die Bedeutung von undefined und null definieren. –

Antwort

9

Wenn wir "idiomatischen Knoten" als "was Knoten selbst tut" interpretieren, dann wäre null was idiomatisch. Wenn Sie dies am Knoten Aufforderung eingeben (auf einer * nix-Maschine), werden Sie true erhalten:

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

ich mit anderen Rückrufen aus dem fs Modul versucht habe, und bekam das gleiche Verhalten. Ich habe nicht alle Orte in Node-API getestet, wo Rückrufe verwendet werden.

Ich habe keinen Hinweis, die besagt, dass Knoten muss gesetzt err zu null in solchen Fällen gefunden.

+0

Ich sehe keinen Grund, es zu testen, wenn Sie nur den Quellcode dieser Module im 'lib /' - Ordner des Node.js-Quellpakets (oder auf GitHub) betrachten können. –

0

Im Fehlerfall werden undefined und null immer als gleich betrachtet.

Sie können beide verwenden. Leute benutzen null, nur weil es kürzer ist.

Wenn Sie nach Fehlern suchen, können Sie in einer Anweisung unter Verwendung von if (err == null) { ... } auf Null und Undefiniert prüfen.

Verwandte Themen