Ich habe async Modul verwendet, um meinen Code-Flow zu verwalten, und es ist in der Tat eine sehr leistungsfähige lib. Wenn der Code jedoch größer wird und der logische Ablauf komplexer wird, stoße ich auf ein Problem mit zu vielen async_callbacks, die verwaltet werden müssen. Einig Pseudo-Code zur Demo der Frage, wie untenNode.JS async Callback
async.auto({
getjobs:function(cb){},
loopjobs:['getjobs']{
async.map(jobs,dojob(job, cb_map),cb);
},
}, function(err, result) {
//handle
});
function dojob(job, callback) {
async.auto({
step1:function(cb){},
step2:['step1', function(cb) {}],
step3:['step1', function(cb) {
moreloops(params, cb);
}]
}, callback)
}
function moreloops(params, cb) {
async.map(params, doloop(param, cb_map), cb);
}
function dbloop(param, cb) {
//dosomething
cb();
}
In dieser Strömung, eine Kombination aus loops
, sequential
, parallel
und conditional
Asynchron-Rückruf wird aufgrund der Notwendigkeit der Geschäftslogik verwendet. Es wird ziemlich schwierig, Fehler zu beheben, wenn irgendeine Funktion aus irgendeinem Grund keinen Rückruf zurückgibt. Ich habe versucht, mit Logging-Framework zu debuggen, aber offensichtlich ist es wegen der asynchronen Natur von node.js nicht sehr effizient.
Gibt es eine gute Möglichkeit, um
- die Strömung verbessern bei der Codierung
- , bei denen die Ursache funktionieren die Strömung stoppt.
Vielen Dank!
Verzicht Callbacks und verschieben Sie auf Versprechen? Ist das eine Option? – Yerken
Verwenden Sie Versprechen. Vieles, um den Kontrollfluss und die Fehler zu verwalten. – jfriend00
Ich denke, "Ereignisse" sind in dieser Hinsicht auch sehr nützlich. –