只从客户端获取NodeCopter数据?

我想从客户端(AR.Drone 2.0)获取数据一次,然后将其存储在要打印的variables中。 我用过:

client.on('navdata', console.log); 

然而,当我执行这个命令的时候,数据被打印了不止一次,我不得不停止脚本来停止这个过程。 我怎样才能获得数据一次,并将其存储在一个variables。

客户端对象inheritanceEventEmitter ,所以你应该可以使用once()只监听一次navdata事件。 要将发射的值存储到一个variables中,可以执行如下操作:

 var _navData; // ... client.once('navdata', function (navData) { _navData = navData; }); 

更新

关于你的评论 ,我build议你声明一个函数,获取一个navdata对象作为参数,并将该函数传递给client.once()

 var doSomethingWithNavData = function doSomethingWithNavData(navData) { console.log(navData); // do what ever you want to do with navData... } client.once('navdata', doSomethingWithNavData); 

有两个用于添加侦听器的EventEmitter方法: .on().once()

  • .on()主动侦听并捕获事件,直到.removeListener().removeAllListeners()来删除侦听器。
  • .once()监听下一个事件自动删除 (有效运行一次 ),除非在.removeListener().removeAllListeners()之前调用它。