我精通node.js,从2年起一直在JS工作。但是我仍然对节点的异步特性感到困惑。看看下面的代码
// 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
我看到这两种情况的执行情况相似,我是否遗漏了任何东西,或者异步功能是否在事件循环中排队?
如果调用异步函数以与同步函数相同的顺序解析可用数据,则无法测试这些函数的异步性,则需要使用setTimeout函数。
但是,为回答您的问题,JavaScript本质上是异步的,无论您是否使用异步,这些函数都会馈送到事件循环。