在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!');
});
我想,你可以在函数中添加第二个参数,在我猜测之前,这个函数更像是一个call,但是你不会经常看到这个参数。
如果你正在讨论的是在大量没有回调的方法之前让某个函数运行,我认为最好的方法就是用一个接受你的主函数作为函数的函数来包装它们回调,这样的事情:
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);
});
让我知道这是不是你以后有什么,我很乐意添加更多选项 - 有来处理这个问题许多潜在的方式,它只是取决于你究竟在寻找什么。将它做成像ruby一样干净是很困难的,因为before_filter
s本身并没有内置到JavaScript中,但是看看最后一个例子,你可以看到它很容易让它变得非常接近。一个比较另类类似于上一个:
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);
});
为每个对象调用'before'和'after'函数,在函数的第一行调用'before',在结尾调用'after'函数? – tymeJV
如果你想解释Ruby中'before'和'after'函数的作用,你可能会得到更多的帮助。 – Shawn31313