我是 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/