Javascript nodej介绍如何在函数完成时再次调用函数

Javascript nodej介绍如何在函数完成时再次调用函数,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,假设我有一个函数 function hello(){ console.log('hello world'); } 现在我想在这个函数完成后再次调用它。所以我做了这样的事情: function hello(){ console.log('hello world'); hello(); } 但是,这样做并不能像预期的那样工作,因为由于nodejs的异步性质,hello在console.log(“hello world”)之前再次被调用完成执行 有没有一种方法可以重复运行函数hello

假设我有一个函数

function hello(){
  console.log('hello world');
}
现在我想在这个函数完成后再次调用它。所以我做了这样的事情:

function hello(){
  console.log('hello world');
  hello();
}
但是,这样做并不能像预期的那样工作,因为由于nodejs的异步性质,
hello
console.log(“hello world”)之前再次被调用完成执行


有没有一种方法可以重复运行函数
hello
,但要等到它完成后才能再次运行?

您的问题不是JavaScript的异步性质。相反,这是因为您有一个无限递归,并且它很快会导致
范围错误:超过了最大调用堆栈大小
,以保护您不使用具有大量函数调用堆栈的所有计算机内存

您不需要有停止条件。实际上,您可以使用JavaScript的异步特性来修复它:

函数hello(){ log('helloworld'); setTimeout(你好,0); }
你好
但是,这样做并不能像预期的那样工作,因为由于nodejs的异步性质,在console.log(“hello world”)之前会再次调用hello;完成执行。
-考虑到nodejs的异步特性仍然会按预期执行该函数,这是没有意义的。您是否在代码、异步函数中使用承诺?我怀疑您试图复制一个在您的示例中不明显的问题。听起来您在无限循环一个没有真正退出条件的函数,并且正在耗尽堆栈。是的,在nodejs中进行测试会产生相同的结果。@eeze您需要一些条件来告诉您何时停止反复调用该函数。我猜您在问题中显示的代码过于简单,是您为了说明问题而编造的,但实际上并没有说明问题,因为没有异步函数那里的行动。