gpt4 book ai didi

javascript - 防止函数同时被调用两次

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:38 25 4
gpt4 key购买 nike

我有一个使用 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);
});
}

busframe函数需要一些时间来执行,因为它使用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 本身内部进行调用,则可以减少任何可能的错误。

最佳答案

您可以通过将“帧传输”处的 bool 值(例如 is_processing)设置为 true 并将“帧接收”处的 bool 值设置为 false 来实现此目的。

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

关于javascript - 防止函数同时被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com