Reputation: 43
I want to loop through some functions recursively so that after last function again it goes to first one and it goes forever. Can anyone please help me out on that? I also want to know if there is proper tutorial or something that will help me out to solve these problem in node js looping and flow controlling. I tried online tutorial though But not able to understand properly.
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();
});
}
})
})
When I executed it goes func 1 -> func 2 -> func 3 and then hangs. I need to recursively loop these again and again.
Edit code :I TRIED TO LOOP SOME FUNCTIONS, not all
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();
]);
}
})
Upvotes: 1
Views: 1619
Reputation: 5704
You could do
function loop(){
async.series([
// your func here
/*func 4*/
, function(callback){
loop()
callback()
}
}
Edit:
And then call it to start
loop();
Another edit:
Maybe there's no need for async at all
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
});
}
Upvotes: 0
Reputation: 1189
You can use the forever function from async, and inside this call async.series
Upvotes: 1