How to implement a lock in JavaScript

前端 未结 8 955
青春惊慌失措
青春惊慌失措 2020-12-04 07:49

How could something equivalent to lock in C# be implemented in JavaScript?

So, to explain what I\'m thinking a simple use case is:

User clicks

8条回答
  •  天涯浪人
    2020-12-04 08:15

    Some addition to JoshRiver's answer according to my case;

    var functionCallbacks = [];
        var functionLock = false;
        var getData = function (url, callback) {
                       if (functionLock) {
                            functionCallbacks.push(callback);
                       } else {
                           functionLock = true;
                           functionCallbacks.push(callback);
                            $.getJSON(url, function (data) {
                                while (functionCallbacks.length) {
                                    var thisCallback = functionCallbacks.pop();
                                    thisCallback(data);
                                }
                                functionLock = false;
                            });
                        }
                    };
    
    // Usage
    getData("api/orders",function(data){
        barChart(data);
    });
    getData("api/orders",function(data){
      lineChart(data);
    });
    

    There will be just one api call and these two function will consume same result.

提交回复
热议问题