nodejs完成后如何再次调用函数

时间:2018-04-18 22:59:47

标签: javascript node.js asynchronous

假设我有一个功能,

function hello(){
  console.log('hello world');
}

现在我想在完成后再次调用此函数。所以我做了这样的事情:

function hello(){
  console.log('hello world');
  hello();
}

但是,这样做并不能按预期工作,因为由于nodejs的异步性质,在hello完成执行之前会再次调用console.log('hello world');

有没有办法重复运行函数hello,但要等到它再次运行第二次之后才能运行?

1 个答案:

答案 0 :(得分:4)

您的问题不是JavaScript的异步性质。更确切地说,就是你有一个无限递归,并且很快就会导致RangeError: Maximum call stack size exceeded使用大量函数调用来保护你免于占用所有机器内存。

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

function hello(){
  console.log('hello world');
  setTimeout(hello, 0);
}

hello();