В 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);
});
Позвольте мне знать, если это не то, что вы были после, и я был бы счастлив, чтобы добавить больше вариантов - Есть много потенциальных способов справиться с этой проблемой, это зависит только от на что именно вы ищите. Было бы сложно сделать это чистым, как рубин, так как 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
Возможно, вам поможет дополнительная помощь, если вы объясните, что делают функции 'before' и' after' в Ruby. – Shawn31313