2017-04-26 2 views
0

Ich mache node.js Übungen von nodeschool.io (learnyounode). Eine der Übungen beinhaltet das Erstellen eines http-Servers, der eine Textdatei aus einem lesbaren Dateistrom bereitstellt. Ich bin sehr neu in der asynchronen Programmierung. Die Lösung kam ich mit ist:Node.js - einen lesbaren Stream an HTTP-Antwort leiten

var http = require('http'); 
var fs = require('fs'); 

var readable = fs.createReadStream(process.argv[3]); 
var server = http.createServer(function(request, response) { 
    readable.on('data', function(chunk) { 
     response.write(chunk); 
    }) 
}); 

server.listen(process.argv[2]); 

Dies funktioniert jedoch die offizielle Lösung, die ein Rohr statt auf Daten Ereignis verwendet:

var http = require('http') 
var fs = require('fs') 

var server = http.createServer(function (req, res) { 
    res.writeHead(200, { 'content-type': 'text/plain' }) 
    fs.createReadStream(process.argv[3]).pipe(res); 
}) 

server.listen(Number(process.argv[2])) 

Was sind die (potentielle) Unterschiede und/oder Vorteile So oder so?

Antwort

0

Nun, es gibt mehr Code in Ihrer Version, und das bedeutet normalerweise, dass Sie mehr Möglichkeiten haben, Fehler zu machen. Berücksichtigen Sie einige Randfälle, beispielsweise was passiert, wenn der Stream einen Fehler auslöst?

Ich bin nicht genau sicher, wie das Verhalten sein würde (Sie können sich selbst überprüfen, indem Sie z. B. einen nicht vorhandenen Dateinamen einfügen) aber die Fehlerbehandlung funktioniert in Ihrer Version nicht sehr gut, möglicherweise Fehler zu ignorieren Sie hören nicht auf Fehlerereignisse).

Verwandte Themen