我只想从客户端(AR.Drone 2.0)获取一次数据,并将其存储在要打印的变量中。我用过:
client.on('navdata', console.log);但是,当我执行此命令时,会多次打印该命令数据,并且必须停止脚本以停止此进程。如何才能只获得一次数据并将其存储在一个变量中。
发布于 2015-06-10 23:27:27
Client对象继承了EventEmitter,因此您应该能够使用once()侦听导航数据事件一次。要将发出的值存储到变量中,可以执行以下操作:
var _navData;
// ...
client.once('navdata', function (navData) {
_navData = navData;
});更新
关于您的评论,我建议您声明一个将导航数据对象作为参数的函数,并将该函数传递给client.once():
var doSomethingWithNavData = function doSomethingWithNavData(navData) {
console.log(navData);
// do what ever you want to do with navData...
}
client.once('navdata', doSomethingWithNavData);发布于 2015-06-10 23:22:57
有两种添加侦听器的EventEmitter方法:.on()和.once()。
.on()会主动侦听和捕捉事件,直到调用.removeListener()或.removeAllListeners()来删除侦听器为止。.once()侦听next事件,自动删除(有效运行一次),除非在.removeListener()或.removeAllListeners()之前调用.removeListener()或.removeAllListeners()来删除它。https://stackoverflow.com/questions/30768938
复制相似问题