假设我有一个功能,
function hello(){
console.log('hello world');
}
现在我想在完成后再次调用此函数。所以我做了这样的事情:
function hello(){
console.log('hello world');
hello();
}
但是,这样做并不能按预期工作,因为由于nodejs的异步性质,在hello
完成执行之前会再次调用console.log('hello world');
。
有没有办法重复运行函数hello
,但要等到它再次运行第二次之后才能运行?
答案 0 :(得分:4)
您的问题不是JavaScript的异步性质。更确切地说,就是你有一个无限递归,并且很快就会导致RangeError: Maximum call stack size exceeded
使用大量函数调用来保护你免于占用所有机器内存。
您不需要有停止条件。您实际上可以使用JavaScript的异步特性来修复它:
function hello(){
console.log('hello world');
setTimeout(hello, 0);
}
hello();