【发布时间】:2020-09-11 06:26:19
【问题描述】:
我精通 node.js,从事 JS 工作 2 年了。但是我仍然对节点中的异步性质感到困惑。看看下面的代码
// Synchronous Code:
function foo() {
const result1 = bar();
console.log(result1);
const result2 = see();
console.log(result2);
}
function bar() {
return 'bar';
}
function see() {
return 'see'
}
foo();
// Result:
// bar
// see
// Asynchronous - I know async keyword returns a promise so i am resolving it
async function foo() {
const result1 = await bar();
console.log(result1);
const result2 = await see();
console.log(result2);
}
async function bar() {
return 'bar';
}
async function see() {
return 'see'
}
foo();
// Result:
// bar
// see
我看到这两种场景的执行方式相似,我是否遗漏了任何东西,或者异步函数是否在事件循环中排队?
【问题讨论】:
-
只需执行
foo(); console.log("foo returned");即可查看差异。 -
你有什么理由相信以上任何一种,结果应该不同?有点不清楚你对什么感到困惑..
-
@Bergi 我现在看到了不同之处。谢谢
-
node.js 是一个事件驱动的架构。这种事件驱动的架构决定了异步操作的处理方式。
标签: javascript node.js asynchronous es6-promise event-loop