Nodejs在javascript中引入了异步性吗

时间:2019-01-30 06:01:12

标签: node.js

我只是想了解nodejs和javascript的概念。 我的问题是Nodejs框架声称它提供了处理jabvascript的异步方法,因此这种处理javascript代码的异步方法是由nodejs引入的,或者它已经在js中可用了?

nodejs也仅以异步方式运行js代码吗?

请帮助我理解这一点。

谢谢。

1 个答案:

答案 0 :(得分:0)

异步并不是Node.js引入或发明的,它早在浏览器中就已经存在(例如setTimeoutXMLHttpRequestaddEventListener),但Node.js却大量使用它。

异步性最初与并行性和多线程无关,但是却说明了何时执行您发起的操作以及何时返回其结果。

因此,如果您有这样的代码:

 doSomeSyncActionA();
 doSomeAsyncActionB();
 doSomeSyncActionC();

然后,在调用B时将启动操作doSomeAsyncActionB,但是在调用doSomeSyncActionC时预计不会完成。

doSomeAsyncActionB中异步发生的原因/方式与之无关。

由于doSomeAsyncActionB进行了一些异步处理,因此您无法直接从中返回数据。您要么必须使用Promises和await等待数据,要么使用回调。

 doSomeSyncActionA();
 await doSomeAsyncActionB();
 doSomeSyncActionC();

由于doSomeSyncActionCdoSomeAsyncActionB的结果完成后现在调用await,但这并不意味着所显示的代码块现在已同步。另一个重要的部分是,如果在两者之间无法执行其他代码(相同上下文),则代码将同步。