[英]infinite loop recursively with node.js
我想遞歸地遍歷一些函數,以便在最后一個函數之后再次到達第一個函數並永遠消失。 有人可以幫我嗎? 我還想知道是否有適當的教程或什么可以幫助我解決節點js循環和流控制中的這些問題。 我雖然嘗試了在線教程,但無法正確理解。
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();
});
}
})
})
執行時,功能1->功能2->功能3掛起。 我需要一次又一次地遞歸循環這些。
編輯代碼:我試圖循環某些功能,但並非全部
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();
]);
}
})
你可以做
function loop(){
async.series([
// your func here
/*func 4*/
, function(callback){
loop()
callback()
}
}
編輯:
然后調用它開始
loop();
另一個編輯:
也許根本不需要異步
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
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.