gpt4 book ai didi

javascript - 递归函数完成后退出node.js

转载 作者:行者123 更新时间:2023-12-02 19:14:44 25 4
gpt4 key购买 nike

我尝试重新连接我的大脑以进行异步编码,但我仍然似乎失败了。不幸的是,我不知道在这种情况下如何正确地做到这一点。我举个例子:

var nconf = require('nconf');

nconf.argv()
.env();

function runme(callback){
var nummessages = nconf.get('SMS_MESSAGES');
decodemessage(0, nummessages);
callback();
}

function decodemessage(i, nummessages) {
if( i < nummessages ) {
var message = 'SMS_'+(i+1)+'_TEXT';
var number = 'SMS_'+(i+1)+'_NUMBER';
console.log('number: '+number);
console.log('message: '+message);
console.log('message text: '+ nconf.get(message));
console.log('message number: '+ nconf.get(number));
decodemessage(i+1);
}
}

runme(function(){
process.exit(0);
});

这由 gammu-smsd 调用,它接收 SMS 消息并将它们放入 ENV 变量中并启动脚本。只要我自己运行它,它就可以正常工作,返回代码似乎也可以工作。当我从 gammu-smsd 运行它时,它失败了,并且看起来解码消息从未执行。一些调试输出显示我确实进入了 runme()。

我的猜测是,runme() 中的回调在递归decodemessage() 调用完成之前执行。我是对的吗?如果是的话,有人可以解释我如何正确地做到这一点吗?

如果你想像这样测试运行它:

node server.js --SMS_MESSAGES 2 --SMS_1_TEXT blabliblo --SMS_1_NUMBER=47796546546 --SMS_2_TEXT Iammessagetwo --SMS_2_NUMBER 12345678

谢谢

最佳答案

似乎您忘记在递归调用中传递nummessages:

decodemessage(i+1, nummessages);

这就是为什么我个人在使用递归时大多向后循环(到零)。

关于javascript - 递归函数完成后退出node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13268479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com