我对异步函数和同步函数有点困惑,如何确定它是否是异步函数?
我的假设是所有接受回调的函数都是非阻塞和异步的,但这是我发现的一个异常(exception):
我找到了Array.prototype.forEach
即使它接受回调作为参数,它也是一个 block 函数。
function test(){
[1,2,3,4,5].forEach(function(item){
for(var i =0; i<100000; i++){
console.log('test');
}
});
console.log('end');
}
test();
该函数会继续打印test直到所有回调完成,不会立即返回运行console.log('end')
真是令人困惑,我如何确定一个函数是否会立即返回?
最佳答案
您可以在这里使用常识规则,您的代码中是否需要异步?为什么我们需要延迟函数?所有数组项都可供您使用,即使它们不可用,也应该有另一个读取器,例如,它是异步的,然后用可用项填充数组,然后迭代它们。如果您需要异步,您肯定会注意到这一点。
关于javascript - 在 Node.js 中,是否所有以回调作为输入参数的函数都是非 block 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965865/