小编gku*_*ian的帖子

如果尚未添加侦听器并且侦听器处理程序是匿名函数,则在 NodeJS 中添加侦听器

有没有办法检查 Node.js 中的对象是否已存在侦听器?我想实现以下场景:

  • 获取db对象
  • 做一些操作
  • 如果尚未添加相同的侦听器,请添加侦听器,例如错误、结果、耗尽等[假设对于所有操作,侦听器操作都是相同的]

我想以这样的方式优化侦听器的添加:如果我们尝试添加现有侦听器,则不会添加新侦听器。Node 文档说“不会检查侦听器是否已添加。传递相同的 eventName 和侦听器组合的多个调用将导致侦听器被多次添加和调用。

有办法解决吗?
[编辑]-添加一些示例代码

 connpool.getConnection(function(err, connection) {

      var querystr = "Some valid SQL query";

      connection.execute(querystr, data, function(err, rows) {
        if (err) {
          console.error(err);
        }
        connection.on('error', function(err){onErr(err,connection);});
        do some stuff
        cleanup(connection);
    });
    })  

   var onErr = function(err, connection) {
      console.error({"Error message"});
      connection.release();
      cleanup(connection);
   };

   var cleanup = function(conn) {
    conn.removeListener('error',onErr);
   };
Run Code Online (Sandbox Code Playgroud)

Connection将包含一个数据库连接,它来自外部包。在语句connection.on('error', function(err){onErr(err,connection);}); 我正在使用匿名函数,因为我需要向清理方法传递一个额外的参数。在清理过程中,我没有获得该函数的处理程序,因为我使用的是匿名函数。

event-handling listener addeventlistener node.js

5
推荐指数
1
解决办法
2840
查看次数