【问题标题】:Nodejs wait between function executionNodejs在函数执行之间等待
【发布时间】:2021-02-25 14:42:36
【问题描述】:

我创建了一个接收 MQTT 消息的 NodeJS 应用程序。在收到消息时,我启动一个函数来检查数据库,如果不存在,我会更新数据或创建数据。我同时收到 12 条消息,第一条消息应该在数据库中创建数据,其他消息应该更新数据;但函数调用太快,SQL 查询比我的调用时间慢,我在数据库中创建了多个数据。

如何在函数调用之间设置延迟?可以排队吗?像这样:

message 1 arrive -> call my function.
message 2 arrive -> function is busy, wait. Function not busy call function.
message 3 arrive -> function is busy, wait. Function not busy call function.
etc...

解释我的问题并不容易,希望你能理解... 谢谢

对不起我的英语...

【问题讨论】:

  • 是否有任何具有回调/等待功能的函数?当函数停止运行时,你需要以某种方式告诉你的程序
  • 不,我该怎么做?

标签: mysql node.js function mqtt


【解决方案1】:

您可能应该将传入消息添加到本地队列,然后您可以按顺序处理它们。

另一种选择是使用高 QOS 订阅并控制发送给代理的 MQTT 确认消息,但我认为 MQTT.js 不支持这一点。

您应该考虑使用 Promise 来处理对数据库的调用,因为这些调用很可能是异步的,因此会在操作完成之前返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2011-08-16
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多