node.js - 什么是阻塞函数?

标签 node.js asynchronous real-time terminology blocking

什么是阻塞函数阻塞调用

这是我在提到 Node.js 或实时处理语言时反复看到的一个术语。

最佳答案

一个停止脚本执行直到结束的函数。

例如,如果我有一个用我的语言编写的用于写入文件的函数,如下所示:

fwrite(file, "Contents");
print("Wrote to file!");

print 语句只会在文件写入磁盘后执行。整个程序在这条指令上暂停。这对于足够小的写入并不明显,但想象一下我有一个巨大的 blob 要写入文件,这需要几秒钟:

fwrite(file, blob);
print("Wrote to file!");

print 语句只会在写入几秒钟后执行,而整个程序将在这段时间内停止。在 Node.js 中,这些工作是 异步 完成的,使用 事件回调。我们的例子会变成:

fwrite(file, blob, function() {
    print("Wrote to file!");
});
print("Do other stuff");

其中第三个参数是文件写入后要调用的函数。位于 write 函数之后的 print 语句将在之后立即调用,无论文件是否已被写入。因此,如果我们要编写一个足够大的 blob,输出可能如下所示:

Do other stuff
Wrote to file!

这使得应用程序非常快速,因为您无需等待客户端消息、文件写入或其他。您可以继续以并行方式处理数据。这是 Node.js 的许多优势之一。

关于node.js - 什么是阻塞函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407165/

相关文章:

c# - 使用 async/await 时防止 winforms UI 阻塞

c# - Entity Framework 中的异步查询和延迟加载

javascript - 如何在网络浏览器中显示实时数据?

javascript - req.body 未定义多部分

javascript - Post请求在服务器端返回未定义

javascript - 在 Windows 中查找 Node.js 服务器的进程 ID

c# - 从 C# 引用异步 F# 数据类型

c - 解析两个数字 - 高位数字和个位数字

javascript - 实时音频网络到桌面应用程序

javascript - 使用 pdfkit 时,我可以在同一段落中混合使用字体粗细吗?