Javascript 防止函数在同一时间被调用两次

Javascript 防止函数在同一时间被调用两次,javascript,node.js,Javascript,Node.js,我有一个使用I/O线发送和接收帧的函数 var async = require('async'); function busFrame(TX, callback){ async.series([ function(callback){ sendFrame(TX, function(err){ console.log("Frame Transmitted"); return callba

我有一个使用I/O线发送和接收帧的函数

var async = require('async');
function busFrame(TX, callback){
    async.series([
        function(callback){
            sendFrame(TX, function(err){
                console.log("Frame Transmitted");
                return callback(err);
            });
        },
        function(callback){
             recieveFrame(function(err){
                 console.log("Frame Recieved");
                 return callback(err);
             });
        }
    ],
    function(err){
        return callback(err);
    });
}
总线框架
函数需要一些时间来执行,因为它使用I/O线,当我快速调用它时,它会在同一时间执行多次。像这样:

busFrame([1,2,3], function(err){    
});
busFrame([4,5,6], function(err){    
});
输出为:

Frame Transmitted
Frame Transmitted
Frame Recieved
Frame Recieved
我想防止函数在同一时间被多次调用,任何其他调用都应该延迟到第一次调用返回为止


我知道我可以使用
async.series()
调用函数
busFrame
,但如果有办法防止调用从
busFrame
本身内部进行,则可以减少任何可能的错误

您可以通过将布尔值(例如,
is_processing
)在“帧传输”处设置为true,在“帧接收”处设置为false来实现这一点


is\u processing
设置为true并调用该方法时,将给定的参数放入队列中,当设置为false时,处理队列中的下一项。

您也可以尝试使用singleton设计模式,该模式将只生成所调用函数的一个实例


所以不要在函数内部使用异步调用吗?我不明白,如果你能举个例子的话,这将非常有帮助。谢谢
Public [type] getinstance() {
  if instance == null {
    instance = new [type];
  }
  return (instance)
}