用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 }); }