λΉλκΈ° νν¬μλ₯Ό μ¬μ©νλ μ½λλ₯Ό 리ν©ν λ§ν΄μΌ νλ€κ³ λ€μμ΅λλ€. λ무 κΉμ΄ λ€μ΄κ°λ μ¬λ¬ κ°μ μ°κ²°λ ν¨μκ° μκ³ ν¨μ λ±μ μ¬μ¬μ©νκ³ μΆμκΈ° λλ¬Έμ μ£Όλ‘ μ¬μ©νμ΅λλ€. μλ°ν λ§νλ©΄ μ€λ₯ 쑰건μ μλμ§λ§ μ²΄μΈ μλμ ν μ§μ μ μ‘°κ±΄μ΄ μμ΅λλ€. μΈλͺ¨κ° μκΈ° λλ¬Έμ λλ¨Έμ§ νν¬ μ²΄μΈμ μ λ¬νκ³ μΆμ΅λλ€. μλ₯Ό λ€μ΄ 쿼리λ₯Ό μννλλ° κ²°κ³Όκ° μκ³ μ€λ₯κ° μλλ©° κ²°κ³Ό μμ΄ λκΉμ§ μ ννκ³ μΆμ§ μμ΅λλ€. λΉλκΈ° μμ΄ μ΄ μμ μ μννλ κ²½μ° "μ΅μ’ " μ½λ°±μ΄ μκ³ λͺ μμ μΌλ‘ μ€λ₯λ₯Ό λμ§μ§ μκ³ μ²΄μΈμμ λ²μ΄λλλ‘ νΈμΆλ μ μλ€κ³ μκ°ν©λλ€. μ΄ κΈ°λ₯μ νν¬μμλ μλ κ² κ°μ΅λλ€. μ΄κ²μ κΉλνκ² ν μ μλ λ°©λ²μ΄ μμ΅λκΉ? λ΄κ° λ³Ό μμλ μ μΌν λ°©λ²μ νΉλ³ν μ€λ₯λ₯Ό λμ§ λ€μ μ΅μ’ μ½λ°±μμ μ²λ¦¬νμ¬ μ€λ₯κ° μλ κ²μ λ°ννλ κ²μ λλ€.
μλ ,
λΉμ μ μλ§λ μ§κΈκΉμ§ λ¬Έμ λ₯Ό ν΄κ²°νμ κ²μ λλ€. btw μ΄κ²μ λ΄ μ κ·Ό λ°©μμ λλ€.
var flow = [
async.apply(...),
// ...
];
async.waterfall(flow, function (err) {
if (err === 'ok') return;
// handle error
});
ν¨μκ° err = 'ok'
λ₯Ό μ¬μ©νμ¬ μ½λ°±μ νΈμΆνλ©΄ νν¬μμ μ΅μ’
μ½λ°±μ΄ μ΄λ₯Ό κ°λ‘μ±λλ€.
λΉμ·ν λ¬Έμ κ° μμΌλ©° μ¬μ©νλ λͺ¨λ νν¬μ λν μ€λ₯μΈμ§ μ¬λΆλ₯Ό νμΈνκΈ° μν΄ μ½λ°± λνΌ(νΌν μ μμ)λ₯Ό μΆκ°νκ³ μμ΅λλ€. νλ μ΄μμ νν¬κ°μμ λ κΉ¨λνμ§ μμ΅λλ€.
μ½λ°± ν¨μ μ체μ 'final'μ΄λΌλ λ λ€λ₯Έ μμ±μ΄ μμ μ μμ΅λκΉ? μ¬λλ€μ μ΄ μμ±μ νΈμΆνμ¬ λκΉμ§ κ° μ μμ΅λλ€.
κ°μ κ²
function search (cond, callback) {
async.waterfall([function (cb) {
db.get(cond, cb);
},
function (res, cb) {
if (!res || !res.length)
return cb.final();
//do something useful
}
], callback);
}
λλ μ½λ°±μ κ°μ νμκ° μμΌλ©° νλ‘κ·Έλ¨μ λλ¨Έμ§ λΆλΆμ μ°κ²°λ μ μμ΅λλ€.
@caolan @jnordberg pull requestμ λν΄ λ§μμ
@tax : μ€μ λ‘ λ€μκ³Ό κ°μ΄ 'error' = trueλ₯Ό μ λ¬νμ¬ μ΅μ’ ν¨μλ‘ κ±΄λλΈ μ μμμ λ°κ²¬νμ΅λλ€.
async.waterfall([ν¨μ(μ½λ°±) {
μ½λ°±(λ); // <--- λ€μ fnμΌλ‘ μ΄λ
},
ν¨μ(μ½λ°±) {
μ½λ°±(μ°Έ); // <--- λ§μ§λ§ fnμΌλ‘ 건λλ°κΈ°
},
ν¨μ(μ½λ°±) {
μ½λ°±(λ); // <--- μ΄ fnμ νΈμΆλμ§ μμ΅λλ€.
}
], μ½λ°±);
@tot2ivn ν κ°μ¬ν©λλ€!
μ€λ₯λ₯Ό μ€μ νλ©΄ κ²°κ³Όκ° λΉμ΄ μμ΅λλ€.
var async = require('async');
async.waterfall( [
function( callback ){
console.log('one');
callback( null );
},
function( callback ){
console.log('two');
callback( true, 'more info' );
},
function( callback ){
console.log('three');
callback( null );
}
], function(err, result){
console.log( err, result );
} );
// RESULT
// one
// two
// true undefined
pull request #85λ₯Ό λ«μ λ @caolan μ μ견μ
κ°μΈμ μΌλ‘ μ΄λ° κΈ°λ₯μ΄ νμνκ³ ν΅μ¬ λΌμ΄λΈλ¬λ¦¬μ μΆκ°λμ΄μΌ νλ€κ³ μκ°ν©λλ€.
κ΄μ¬ μλ μ¬λμ΄ μμΌλ©΄ μ¬κΈ° λ΄ λμ°λ―Έ ν΄κ²° λ°©λ²μ΄ μμ΅λλ€...
exports.breakWaterfall = function(tasks, callback){
async.waterfall(tasks, function(){
if(arguments[0] === 'break'){
arguments[0] = null;
}
callback.apply(null, arguments);
});
}
μμ
λ΄μμ λ§μ§λ§ ν¨μλ‘ μ€λ¨ν΄μΌ νλ κ²½μ° done('break', other, arguments);
μ κ°μ΄ μ½λ°±μ νΈμΆνλ©΄ λ©λλ€.
λμ°λ―Έλ 'break'
κ°μ§νκ³ μΈμλ₯Ό λ³κ²½νμ¬ λλ¨Έμ§ μ½λμμ μ€λ₯μ²λΌ 보μ΄μ§ μλλ‘ ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
κ°μΈμ μΌλ‘ μ΄λ° κΈ°λ₯μ΄ νμνκ³ ν΅μ¬ λΌμ΄λΈλ¬λ¦¬μ μΆκ°λμ΄μΌ νλ€κ³ μκ°ν©λλ€.
κ΄μ¬ μλ μ¬λμ΄ μμΌλ©΄ μ¬κΈ° λ΄ λμ°λ―Έ ν΄κ²° λ°©λ²μ΄ μμ΅λλ€...
μμ λ΄μμ λ§μ§λ§ ν¨μλ‘ μ€λ¨ν΄μΌ νλ κ²½μ°
done('break', other, arguments);
μ κ°μ΄ μ½λ°±μ νΈμΆνλ©΄ λ©λλ€.λμ°λ―Έλ
'break'
κ°μ§νκ³ μΈμλ₯Ό λ³κ²½νμ¬ λλ¨Έμ§ μ½λμμ μ€λ₯μ²λΌ 보μ΄μ§ μλλ‘ ν©λλ€.