用node.jsrecursion无限循环

我想recursion循环一些函数,以便在最后一个函数之后,它将会返回到第一个函数,并且它将永远持续下去。 任何人都可以帮我一下吗? 我也想知道是否有适当的教程或者什么东西可以帮我解决js循环和stream量控制中的这些问题。 我试过在线教程虽然但不能正确理解。

var util = require('util'); var async = require('async'); var SensorTag = require('./index'); var USE_READ = true; SensorTag.discover(function(sensorTag) { console.log('discovered: ' + sensorTag); sensorTag.on('disconnect', function() { console.log('disconnected!'); process.exit(0); }); async.series([ /*func 1*/ function(callback) { console.log('connectAndSetUp'); sensorTag.connectAndSetUp(callback); }, /*func 2*/ function(callback) { console.log('readDeviceName'); sensorTag.readDeviceName(function(error, deviceName) { console.log('\tdevice name = ' + deviceName); callback(); }); }, /*func 3*/ function(callback) { console.log('readSystemId'); sensorTag.readSystemId(function(error, systemId) { console.log('\tsystem id = ' + systemId); callback(); }); } }) }) 

当我执行它去func 1 – > func 2 – > func 3,然后挂起。 我需要recursion循环这些一次又一次。

编辑代码:我试图回圈一些function,不是全部

 var util = require('util'); var async = require('async'); var SensorTag = require('./index'); var USE_READ = true; SensorTag.discover(function(sensorTag) { console.log('discovered: ' + sensorTag); sensorTag.on('disconnect', function() { console.log('disconnected!'); process.exit(0); }); //function loop(){ async.series([ /*func 1*/ function(callback) { console.log('connectAndSetUp'); sensorTag.connectAndSetUp(callback); }, function loop(callback){ /*func 2*/ function(callback) { console.log('readDeviceName'); sensorTag.readDeviceName(function(error, deviceName) { console.log('\tdevice name = ' + deviceName); callback(); }); }, /*func 3*/ function(callback) { console.log('readSystemId'); sensorTag.readSystemId(function(error, systemId) { console.log('\tsystem id = ' + systemId); callback(); }); }, function(callback){ loop() callback() } } /* function(callback) { console.log('readDeviceName'); sensorTag.readDeviceName(function(error, deviceName) { console.log('\tdevice name = ' + deviceName); callback(); }); }, function(callback) { console.log('readSystemId'); sensorTag.readSystemId(function(error, systemId) { console.log('\tsystem id = ' + systemId); callback(); }); },*/ /*func 4*/ loop(); ]); } }) 

您可以使用async的永久function ,并在此调用async.series

你可以做

 function loop(){ async.series([ // your func here /*func 4*/ , function(callback){ loop() callback() } } 

编辑:

然后叫它开始

 loop(); 

另一个编辑:

也许根本不需要asynchronous

 sensorTag.connectAndSetUp(readDevice); function readDevice() { console.log('readDeviceName'); sensorTag.readDeviceName(function(error, deviceName) { console.log('\tdevice name = ' + deviceName); readSystemId(); }); } function readSystemId() { console.log('readSystemId'); sensorTag.readSystemId(function(error, systemId) { console.log('\tsystem id = ' + systemId); readDevice(); // start over again }); }