Are Mutexes needed in javascript?

前端 未结 7 1608
情书的邮戳
情书的邮戳 2020-12-12 14:51

I have seen this link: Implementing Mutual Exclusion in JavaScript. On the other hand, I have read that there are no threads in javascript, but what exactly does that mean?

7条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-12 15:05

    As @william points out,

    you may need a mutex if your code does something where it expects a value not to change between when the asynchronous event was fired and when the callback was called.

    This can be generalised further - if your code does something where it expects exclusive control of a resource until an asynchronous request resolves, you may need a mutex.

    A simple example is where you have a button that fires an ajax call to create a record in the back end. You might need a bit of code to protect you from trigger happy users clicking away and thereby creating multiple records. there are a number of approaches to this problem (e.g. disable the button, enable on ajax success). You could also use a simple lock:

    var save_lock = false;
    $('#save_button').click(function(){
        if(!save_lock){
            //lock
            save_lock=true;
            $.ajax({
                success:function()
                    //unlock
                    save_lock = false;  
                }
            });
        }
    }
    

    I'm not sure if that's the best approach and I would be interested to see how others handle mutual exclusion in javascript, but as far as i'm aware that's a simple mutex and it is handy.

提交回复
热议问题