首页 > 解决方案 > 如何在消息事件之外使用消息数据?

问题描述

  client.on('message ',function(message){
       console.log(message)
    });

在上面的异步代码中,我如何在消息事件之外使用消息数据?

标签: node.jsasynchronous

解决方案


通常,您不会在该回调之外使用它。您将想要使用该消息的任何代码放入该回调或您从该回调调用的函数中。

因为client.on('message', ...)是事件驱动的,所以你不知道它什么时候会发生。因此,如果您将数据存储在其他地方并期望将来有代码使用它,那么您的其余代码就无法知道数据现在在那里并且有效。

因此,任何代码想要该消息都需要放入此回调或您从此回调调用的函数中。通常的模型是,当数据到达时,您在此回调中实时处理数据,或者您调用某个函数将数据“推送”到其他函数,以便它可以处理数据。

在某些(通常很少见)情况下,您会收集数据,然后某些未来事件将处理数据,但我猜这不是您在这里所做的。如果是,那么您只需将此数据添加到某个更高范围的某个集合中。

如果您向我们提供有关您的实际问题的更多细节,我们可以更具体地提供有关如何解决该特定问题的建议。由于您的问题是现在写的,这是一个没有具体细节的通用问题,所以我们所能做的就是提供一个没有具体建议或细节的通用答案。

因为看起来你是新来的,所以这里的新人通常倾向于认为他们应该用他们编写的代码(伪代码)以通用的方式编写他们的问题。这通常是一个糟糕的选择。如果您向我们展示您的真实问题和真实代码,我们可以为您提供针对您的确切问题的深入的具体解决方案和代码,我们可以为您提供您甚至不知道要询问的解决方案或建议。如果你用你真正的问题展示你的真实代码,而不是你为 stackoverflow 编写的通用版本,你会得到更好的答案。


推荐阅读