2017-09-23 5 views
0

저는 IoT 프로젝트를하고 있습니다. 일반적인 시나리오는 다음과 같습니다IoT 응용 프로그램의 동기화 모드가 어떻게 처리됩니까?

  1. 내가
  2. 그런 다음 나는 현재이 다음에 무엇을 결정하는 좌표를 얻을 필요가 좌표 (x, y)로 이동 장치를 제어 할 필요가있다.

디바이스와 통신하기 위해 MQTT를 사용합니다. 그래서 내 코드에서, 나는 Blockly이 같은 작업을 표현 :

//javascript 
robot.move(x, y); 
if(robot.x > 100) { 
// do something... 
} 

물론, 이동 (..) 메소드는 단지 명령을 발행하고 완료를 기다리지 않고, 비동기입니다.

메시징 패턴으로 인해 async 함수로 move (..)를 수행하고 await을 적용합니다. 메시지가 실제로 브로커가 지정된 위치로 이동하지 않고 메시지 브로커가 메시지를 전달한다는 콜백 만 받기 때문에 작동한다고 생각하지 않습니다.

이렇게 이런 종류의 시나리오에 대해 어떻게해야합니까?

답변

0

콜백 및 약속을 사용해 보셨습니까? 약속

robot.move(x, y, function(err, res) { // do something }) 

또는 반환 : 일반적으로 비동기 기능 중 일부 콜백을 제공

robot.move(x, y).then(function(res) { // do something }).catch(function(err) { // error }) 
+0

고마워요. 나는 그것을 안다. 콜백은 메시지가 로봇에 전달 될 때 호출되지만 로봇은 메시지를받은 후 특정 위치로 이동할 시간이 필요합니다. 그리고 나중의 완성은 내가 모르는 것입니다. – Chao

0

가 명확하기를, MQTT에 배달 알림을 종료 끝이없는, 콜백이 아니라 그 메시지 중개인에게 전달되었으며 로봇 전방으로 전달되지 않았습니다. 로봇이 동작하고 있음을 알 수있는 유일한 방법은 동작을 완료했음을 확인하기 위해 별도의 메시지를 게시하는 것입니다.