从客户端获取一次NodeCopter数据?

时间:2015-06-10 23:16:58

标签: node.js

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

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

但是,当我执行此命令时,数据会被多次打印,我必须停止脚本才能停止此过程。如何只获取一次数据并将其存储在变量中。

2 个答案:

答案 0 :(得分:2)

客户端对象继承 EventEmitter ,因此您应该只能使用once()来监听 navdata 事件一次。要将发射的值存储到变量,您可以执行以下操作:

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

<强>更新

关于您的comment,我建议您声明一个将 navdata 对象作为参数的函数,并将该函数传递给client.once()

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

client.once('navdata', doSomethingWithNavData);

答案 1 :(得分:1)

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

  • .on()主动侦听并捕获事件,直到调用.removeListener().removeAllListeners()来移除侦听器。
  • .once()听取下一个活动自动删除(有效地运行),除非.removeListener().removeAllListeners()被调用以删除它。