我有一个关于在回调之间传递数据时将回调链接在一起的最佳方法的问题。我下面有一个示例,它可以工作,但有一个缺陷,即函数必须了解链并知道它们的位置/是否传递回调。
function first(data, cb1, cb2, cb3){
console.log("first()", data);
cb1(data,cb2, cb3);
}
function second(data, cb1, cb2) {
console.log("second()",data);
cb1(data, cb2);
}
function third(data, cb) {
console.log("third()",data);
cb(data);
}
function last(data) {
console.log("last() ", data);
}
first("THEDATA", second, third, last); // This work OK
first("THEDATA2", second, last); // This works OK
first("THEDATA3", second); // This doesn't work as second tries to pass on a callback that doesn't exit.
我可以想出很多方法来解决这个问题,但它们都涉及让被调用的函数了解正在发生的事情。但我的问题是,我正在处理的真实函数已经存在,如果可以避免的话,我不想修改它们。所以我想知道我是否错过了如何调用这些的技巧?