node.js - 确保一个事件发生在另一事件之前

标签 node.js

我是 Node.js 新手,正在学习...

我有以下 2 个 socket.io 监听器,我需要确保 .on 在 .once 之前发生(当前 .once 首先发生):

io.on('connection', function (socket) {

io.once('connection', function (socket) {

有没有一个好的方法来确保 .once 总是发生?

最佳答案

这可能不起作用,因为您正在创建两个独立的函数。通常,对于事件监听器来说,这很好。在这种情况下,您需要将它们耦合起来。

您可以做的是使用 on 进行订阅,并让处理程序确定它之前是否运行过。

io.on('connection', function (socket) {
  if (!this.called) {
    // do what you want to do only the first time

    this.called = true;
  }

  // do whatever you want to do every time
}.bind({ called: false });

这将创建一个包装函数,用于跟踪它是否已被调用,并在第一次调用时执行一些特殊操作。

关于node.js - 确保一个事件发生在另一事件之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20508974/

相关文章:

node.js - 从 gulp 发出运行 karma 任务

node.js - 如何使用fulfillment从api获取数据并在Actions中显示?

node.js - NodeJS 插件无法在 Sublime Text 3 中构建,显示 "Error: Cannot find module '/Volumes/Macintosh'”

mysql - 比较 Angular 中的两个日期时间(一个是从mysql数据库获取,一个是 Node 服务器)

javascript - 低db : update record at index N

node.js - 如果 session cookie 是安全的,则 CSURF 不工作

javascript - 从 Node.js 向 Apache solr 发出带有变音符号的 Http GET 请求

javascript - Mongoose 文本搜索未返回任何结果

Node.js 使用 Express 在 HTTP POST 上以 multipart/form-data 形式写入 jpeg 文件

node.js - Node 表达代理中间件句柄重定向