【问题标题】:Is asyncronicity introduced in javascript by Nodejs [duplicate]Nodejs在javascript中引入了异步性[重复]
【发布时间】:2019-06-23 08:32:26
【问题描述】:

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

而且 nodejs 也只以异步方式运行 js 代码?

请帮助我理解这一点。

提前致谢。

【问题讨论】:

  • 在标题中它是 javascript 而不是 java。

标签: node.js


【解决方案1】:

Asynchronicity 不是 nodejs 引入或发明的,它早在浏览器中就存在了(例如setTimeoutXMLHttpRequestaddEventListener),但 nodejs 大量使用。

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

所以如果你有这样的代码:

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

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

doSomeAsyncActionB 中为什么/如何发生这种异步性无关紧要。

由于doSomeAsyncActionB 做了一些异步操作,你不能直接从它返回数据。您要么必须使用 Promises 和 await 等待数据,要么使用回调。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多