Javascript Node.js侦听动态创建的对象上的事件
我有一个Node.JS应用程序,它可以根据数据库中存储的信息动态创建记录对象,记录的每个实例都会发出事件,我想听听它们。 事情是这样的:Javascript Node.js侦听动态创建的对象上的事件,javascript,node.js,events,Javascript,Node.js,Events,我有一个Node.JS应用程序,它可以根据数据库中存储的信息动态创建记录对象,记录的每个实例都会发出事件,我想听听它们。 事情是这样的: db.getRecords(function(group){ for (var i = 0; i < group.length; i++) { var record = new Record(JSON.parse(group[i].list),group[i].id,group[i].time); record.s
db.getRecords(function(group){
for (var i = 0; i < group.length; i++) {
var record = new Record(JSON.parse(group[i].list),group[i].id,group[i].time);
record.setup();
record.on('dropped',function(){
db.deleteRecord(record.id);
});
}
});
db.getRecords(函数(组){
对于(变量i=0;i
上面的代码将始终侦听上次创建的对象发出的事件。。。这是有道理的,但我不知道如何聆听我所有的录音对象,并对它们发出的伊凡特作出反应。感谢您的帮助/建议 当前代码正在侦听所有记录生成的事件。但是,在所有情况下,db.deleteRecord
都将被调用,其中包含循环所覆盖的最后一条记录的id。以特定实例为例,第一条记录的事件处理程序将使用最后一条记录的id调用db.deleteRecord
要解决此问题,您可以执行以下操作:
record.on('dropped',function(id){
db.deleteRecord(id);
}.bind(undefined, record.id));
这将强制将传递给回调的id
设置为调用bind时record.id
具有的值。(在匿名函数中,bind
的第一个参数将this
设置为undefined
。)