javascript - 为什么 NodeJS 中 String 的 split 方法是同步执行的?

标签 javascript node.js split

我是 NodeJS 新手,在理解哪些类型的操作/任务是异步执行还是同步执行时遇到了一些困难。我正在研究的具体示例是分割字符串。

我试图计算文本 block 中新行的数量,然后将其打印出来。下面的例子有效。但是,我并不完全清楚为什么。我的基本(可能有缺陷)理解是任何需要时间的事情都是异步执行的(例如 I/O),但我不知道什么类型的操作算作“花费时间”。 Split() 方法“需要时间”吗?它必须循环遍历字符串的内容,如果字符串异常长,这可能需要一段时间,为什么会同步执行,或者只是 split 方法阻塞了?

我的问题是针对 split 方法的,但如果有人也可以谈论或指出一些文档的方向,这些文档解释了同步与异步执行的内容,我将非常感激!

var array = "test\nstring\nexample".split("\n");
console.log(array.length-1);

最佳答案

JavaScript 本身的大多数操作都是同步的。异常(exception)包括明显的异常(exception),例如 setTimeout()setInterval()requestAnimationFrame() 等。也只是因为您传入了回调并不意味着该函数是异步的(例如,请参阅一些数组方法,如 array.forEach()、array.map()、array. filter()、array.some() 等)。

Node.js(核心)构建在 JavaScript 之上(通过 v8 引擎),添加了自己的同步和异步方法。然而,很早就决定通过同步执行的函数的易于可见的 Sync 后缀来区分两者。然而,与 JavaScript 类似,也有一些异常(exception)(例如 require())。还应该注意的是,用户层模块(例如在 npm 上)可能有自己的约定(或根本没有),因此对于那些第三方模块,您需要阅读文档以确保其导出函数的行为。

关于javascript - 为什么 NodeJS 中 String 的 split 方法是同步执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26005061/

相关文章:

javascript - 如何在 apache ubuntu 12.04 中为 node.js 创建虚拟主机

node.js - nodejs 中的 Elasticsearch 连接时没有事件连接错误

node.js - 无法使用 TriggerAction 与 Microsoft Bot 框架 (node.js) 中的 LUIS 意图匹配

c# - 在 C# 中将包含项目和值的字符串拆分为字典

java - 为什么我的 Java split 方法导致打印空行?

javascript - 对克隆表单进行验证

javascript - 如何处理 jquery 中的 AJAX 错误

javascript - 停止 shift 单击以突出显示文本

node.js - Nodejs-console.error vs util.debug

linux - 根据大小和模式在 unix 中拆分大文件