Node.js
Undvik återuppringning helvete
Sök…
Async-modul
Källan är tillgänglig för nedladdning från GitHub. Alternativt kan du installera med npm:
$ npm installation - spara async
Förutom att använda Bower:
$ bower installera async
Exempel:
var async = require("async");
async.parallel([
function(callback) { ... },
function(callback) { ... }
], function(err, results) {
// optional callback
});
Async Module
Tack och lov finns bibliotek som Async.js för att försöka bromsa problemet. Async lägger till ett tunt lager funktioner ovanpå din kod, men kan kraftigt minska komplexiteten genom att undvika återuppringning.
Det finns många hjälpmetoder i Async som kan användas i olika situationer, som serier, parallell, vattenfall, etc. Varje funktion har ett specifikt användningsfall, så ta lite tid att lära dig vilken som hjälper i vilka situationer.
Så bra som Async är, liksom vad som helst, det är inte perfekt. Det är väldigt lätt att bli borttagen genom att kombinera serier, parallella, för evigt, etc, vid vilken tidpunkt du är tillbaka tillbaka till där du började med rörig kod. Var försiktig så att du inte optimerar för tidigt. Bara för att några async-uppgifter kan köras parallellt betyder det inte alltid att de borde göra det. I verkligheten, eftersom Node bara är entrådad, har köra uppgifter parallellt med användning av Async liten eller ingen prestationsförstärkning.
Källan är tillgänglig för nedladdning från https://github.com/caolan/async . Alternativt kan du installera med npm:
$ npm installation - spara async
Förutom att använda Bower:
$ bower installera async
Asyncs vattenfall Exempel:
var fs = require('fs');
var async = require('async');
var myFile = '/tmp/test';
async.waterfall([
function(callback) {
fs.readFile(myFile, 'utf8', callback);
},
function(txt, callback) {
txt = txt + '\nAppended something!';
fs.writeFile(myFile, txt, callback);
}
], function (err, result) {
if(err) return console.log(err);
console.log('Appended text!');
});