在 javascript 中,约定是对这类事情使用回调。因此,如果您只想一个接一个地触发一个函数,它看起来像这样:
var a1 = function(callback){
console.log('doing function things la la');
callback();
}
现在,当您调用该a1
函数时,您将执行以下操作:
a1(function(){
console.log('this is only printed at the end!');
});
我想,您可以在函数中添加另一个第二个参数,这更像是一个调用,但您不会经常看到这种情况。
如果您正在谈论让某个函数在大量没有回调的方法之前运行,我认为最好的方法就是用一个接受您的主要函数作为回调的函数包装它们,例如这:
var a1 = function(){ console.log('a1'); }
var a2 = function(){ console.log('a2'); }
var a3 = function(){ console.log('a3'); }
var a4 = function(){ console.log('a4'); }
var before_filter = function(callback){
console.log('doing some stuff before whoo!');
callback();
}
[a1, a2, a3, a4].map(function(fn){
before_filter(fn);
});
如果这不是您想要的,请告诉我,我很乐意添加更多选项——有很多潜在的方法可以解决这个问题,这取决于您到底在寻找什么。由于 s 本身并没有内置到 javascript 中,因此很难让它像 ruby 一样干净before_filter
,但是查看最后一个示例,您会发现很容易让它非常接近。与上一个类似的另一种选择:
var a1 = function(){ console.log('a1'); }
var a2 = function(){ console.log('a2'); }
var a3 = function(){ console.log('a3'); }
var a4 = function(){ console.log('a4'); }
var before = function(){ console.log('doing before stuff'); }
var before_filter = function(before_fn, fn){
before_fn();
fn();
}
[a1, a2, a3, a4].map(function(fn){
before_filter(before, fn);
});