我正在做一个物联网项目。典型情况是:
我使用MQTT与设备通信。所以在我的代码中,我在Blockly
:
//javascript
robot.move(x, y);
if(robot.x > 100) {
// do something...
}
显然,move(..)方法是异步的,它只是发布命令而不等待完成。
由于消息传递模式,即使我将移动(..)作为async
函数并应用await
。我仍然认为它不起作用,因为我只得到关于消息的回调是由消息代理传递给机器人,而不是机器人实际上移动到指定的位置。
那么我应该怎样做这种情况呢?
答案 0 :(得分:0)
你尝试过使用回调和承诺吗?通常异步函数提供一些回调:
robot.move(x, y, function(err, res) { // do something })
或返回一个承诺:
robot.move(x, y).then(function(res) { // do something }).catch(function(err) { // error })
答案 1 :(得分:0)
要明确的是,MQTT中没有端到端传递通知,回调仅是消息已传递给代理,而不是传递给机器人。知道它被机器人采取行动的唯一方法是让它发布单独的消息以确认它已经完成了一个动作