没有回调或承诺的javascript执行序列[重复]

问题描述 投票:0回答:1

我正在使用Nodejs,我对JavaScript的异步特性感到困惑。

如果没有回调函数或promises,every函数是否以异步方式执行?

例如,

let arr = []
for (let i = 0; i < 600; i++) {
    arr.push(i)
}
console.log(arr)
arr = []
console.log(arr)

如果

arr
变成一个空数组,而
arr
被 'for' 语句推送怎么办?

我多次执行上面的代码,幸运的是,没有出现令人担忧的情况。这是巧合吗?


这是另一个例子:

function foo(num) {
    console.log(num)
}
let a = 0
foo(a)
a = 1

我想让

foo(a)
在上面的代码中总是返回 0,而不是 1.

如果 Node.js 运行时执行

a=1
早于
foo(a)
怎么办?

我应该在这些微不足道的情况下添加 promise 吗?

javascript node.js asynchronous
1个回答
1
投票

如果没有回调函数或者promises,是不是每个函数都是异步执行的?

一般情况下,JavaScript是同步执行的。

有些函数是异步的。他们通常返回承诺或接受回调,以便调用他们的人可以在完成后做一些事情。

如果 arr 被“for”语句推送时变成空数组怎么办?

在你的例子中,这不可能发生。你写的代码是同步的。

如果一些异步代码正在运行,那么它就不会在同一个事件循环中,也不会访问那个变量。如果所述异步代码触发了回调,那么它将排队直到该事件循环空闲。

如果 Node.js 运行时执行 a=1 早于 foo(a) 怎么办?

不会。 JavaScript 不会随机化语句的顺序。

© www.soinside.com 2019 - 2024. All rights reserved.