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