在javascript中添加回调,就像在C中一样#
在C#中,我可以执行以下操作:在javascript中添加回调,就像在C中一样#,javascript,c#,callback,delegates,Javascript,C#,Callback,Delegates,在C#中,我可以执行以下操作: public delegate void Callback(); void f1() { } void f2() { } Callback c = f1; c+=f2; var c; function f1() { } function f2() { } c = f1; 然后当我调用c()时,就会调用f1和f2 如何在javascript中实现相同的结果 我的意思是,我可以在javascript中执行以下操作: public delegat
public delegate void Callback();
void f1() {
}
void f2() {
}
Callback c = f1;
c+=f2;
var c;
function f1() {
}
function f2() {
}
c = f1;
然后当我调用c()
时,就会调用f1
和f2
如何在javascript中实现相同的结果
我的意思是,我可以在javascript中执行以下操作:
public delegate void Callback();
void f1() {
}
void f2() {
}
Callback c = f1;
c+=f2;
var c;
function f1() {
}
function f2() {
}
c = f1;
但是我不能将f2
添加到c
var t = function(callback){
// do stuff
callback();
}
function callbackFuction(){
// this is your callback fucntion
}
function diffrentFuntion(){
t(callbackFuction);
}
希望这能回答您的问题它被称为多播委托,我不确定是否有直接的方式用JavaScript表示。但我找到了这个 不,你不能。JavaScript没有C#委托的概念 使用jQuery可以实现类似的功能,但不是相同的功能:
var c=$({});
函数a(){console.log('a called!');}
函数b(){console.log('b called!');}
c、 在(‘火’上,a);
c、 “着火”,b);
c、 触发器('fire');//调用两个事件处理程序
这里是另一个例子。这可能满足您的需求,也可能不满足您的需求,但您可以修改它以满足您的需要
基本上,您正在创建一个包含函数引用数组的对象。在对象上调用.apply()
时,它将按照添加的顺序调用所有函数
功能委托(fn){
this.callbacks=[];
本条增补(fn);
}
delegate.prototype.add=函数(fn){
if(fn类型==“函数”){
这个.callbacks.push(fn);
}
}
delegate.prototype.apply=函数(){
for(此.callbacks中的变量i){
this.callbacks[i].apply();
}
}
//范例
//定义回调
函数cb1(){console.log('callback 1');}
函数cb2(){console.log('callback 2');}
//使用第一个回调创建委托
var回调=新委托(cb1);
//添加第二个回调
callback.add(cb2);
//召集代表
callback.apply()你试过运行代码吗?它像你一样工作askin@EhsanSajjad,您使用的是什么javascript版本?f1和f2异步调用是否返回承诺?@palaѕѕ,不。没有异步。@ЯПццццццццццф我读错了,所以您在JS中寻找相同的行为确保它不是最有效的,但我们这里讨论的是2-5次迭代?for in的其他一些故障在这里不适用,因为数组是在此类中创建和填充的。开发人员不能在类之外操作它。在这里,我坚持使用for,不过再看一遍,我想我可能会将它改为this.callbacks.forEach()
。