javascript - 在 Node.js 中,是否所有以回调作为输入参数的函数都是非 block 的?

标签 javascript node.js asynchronous

我对异步函数和同步函数有点困惑,如何确定它是否是异步函数?

我的假设是所有接受回调的函数都是非阻塞和异步的,但这是我发现的一个异常(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/

相关文章:

node.js - 如何使用 Nodejs 绑定(bind)从 DAML 中的存档合约中获取数据?

c# - .NET 客户端/服务器可扩展性和异步 I/O - 过多线程问题

python 扭曲 : "wait" for a variable to be filled by another event

javascript - Bootstrap 分页不适用于 angular-ui-bootstrap/2.5.0/ui-bootstrap-tpls.js

javascript - ui-router 中 ui-sref 属性的动态更改

node.js - 异步 for 循环不将 sqs 消息放入队列

javascript - 刚接触 Mongo/Node/Meteor,想知道为什么 Meteor 没有获取任何数据?

javascript - 使用 Javascript 在 Mobile Safari 中获取选定的文本

javascript - reactjs 中的选择框不起作用

javascript - 等待一个循环结束 JavaScript