假设我有两个异步函数可以并行执行,并且我在函数上方声明了一个变量,并且两个函数都可以访问和修改此变量,而每个函数并不特别了解另一个函数。会导致程序不一致..对吗?例如,
var password;
function async generatepassword(){
// it generates the password and stores in the variable password.
}
function async changepassword(){
// it access and changes the variable password
}
如果两个函数都是异步调用并且几乎是并行调用的,那么上面的代码可能会导致'password'变量不一致?
如果我在异步函数中声明了一个特定的变量,是否明智的是不要使用相同的变量名来再次声明它?还是在内部声明的变量仅在该异步函数中具有作用域?
答案 0 :(得分:2)
是的,如果您以某种方式又一次不等待调用此函数,则可能会导致不一致。但是你不应该。
只需这样称呼他们:
await generatepassword();
await changepassword();
你可以睡个好觉。
答案 1 :(得分:0)
JavaScript默认情况下在单个线程上运行,因此,在您调用函数的那一刻,一个函数将始终以相同的顺序先于另一个函数执行,因此,以某种方式进行的更改是不可变的,首先应用功能1和功能2,而不会因执行而出现意外行为。