某个全局变量,被两个函数操作,1个函数操作需要较长的实际,第二个函数要操作这个变量的时候,第一个函数还没操作完,这就互相两个函数共同操作一个全局变量的问题,这个时候没有说,程序运行会出错滴:( JS是否有锁来解决这种问题捏:)
回复 (8)
R
没有锁,async可以试试看
K
换神马方式,亲)
1
callback的方式
S
贴代码解释下吧。 可以看看 async库
L
锁是多线程的东西,单线程的js只有event loop。你这两个异步函数可以通过设置一个状态标志来解决。
假如你需要func1操作完了,func2才能操作的话,可以增加一个 var mutex=1 的全局变量。
- func1初始操作时设置为
mutex=0,操作完了再设回来mutex=1。 - func2操作前检查
if(mutex),为true则操作,否则nextTick。
R
JavaScript没有多线程的概念,所以也不需要锁,你说的两个函数同时运行的这种情况在JavaScript中不会出现
D
没赋值或没定义的变量,该怎么报错就怎么报错呗,node是单进程的,不需要锁,也没有锁。这种问题主要用流程控制来解决,否则就会变成回调嵌套回调,推荐使用async
K
引用 shanelau贴代码解释下吧。 可以看看 async库
这是一个专门的库?不是JS标准API?
参与回复
登录后即可参与回复。登录