【发布时间】:2018-12-14 13:18:36
【问题描述】:
根据 MDN,
异步函数声明定义了一个异步函数
我理解它是因为该函数将被视为异步进程,就像setTimeout 或某些数据库请求一样。例如,在下面的示例中,进程应该在数字之间的某个位置输出“main”。
let func2 = async () => {
for (let i = 0; i < 51; i ++) {
console.log(i);
}
}
(async () => {
func2();
console.log("main");
})()
但是,“main”总是在最后得到安慰,就像整个过程是同步的。我理解错了什么?
如果同步代码还是同步的,async的目的是什么?只允许 await 在其中并提供一些花哨的方式来返回 Promise?
【问题讨论】:
-
你是对的;添加关键字不会神奇地使代码异步。
-
JavaScript 在技术上是同步的,因为它一次只能运行一件事。
async基本上是在告诉解析器它可以在以后运行该函数。当它运行时,这是当前运行的唯一东西medium.com/@kvosswinkel/… -
“只允许在其中等待并提供一些花哨的方式来返回一个 Promise?” 差不多,但它非常花哨,因为它将复杂的嵌套控制语句拆分为一个承诺链.
-
Javascript 是单线程的,所以即使代码是异步的,你也不会乱序。
-
@GetOffMyLawn 我在某处看到 JavaScript 可以在进程之间切换,因此它的行为类似于多线程。这就是为什么我认为它会在主进程和异步函数之间切换,从而使两个进程并行
标签: javascript node.js async-await