JavaScript如何用数组实现队列问题

jsbuzhidao 2015-09-28 09:59:28

<div style="width:40px; height:40px; border:1px solid #930;" onmousedown="StartCgi()" onmouseup="StopCgi()" >这里指令</div>


var arr=new Array();
var g_TimeCgi;
//点击鼠标
function StartCgi(){
arr.push(1);
g_TimeCgi = setInterval("TimeCgi()",10);
};
//松开鼠标
function StartCgi(){
arr.push(2);
};
//开启定时器
function TimeCgi(){
//这里应该要做判断是发开始还是停止指令

//这里是开始
$.ajax({
type: "get",
url:'/start.xml',
//async: false, //同步
success: function(xhr)
{
console.log('开始成功 ')
}
});

//这里是停止指令
$.ajax({
type: "get",
url:'/stop.xml',
//async: false, //同步
success: function(xhr)
{
console.log('停止成功 ')
}
});
};


你好,请问像鼠标按下发送一条开始指令,鼠标松开发送一条停止指令,正常情况下就是按下执行一个函数,松开执行一个函数,但是如果速度快的话,有时候松开后不会执行停止指令,这样就会导致开始和停止指令不匹配

所以考虑能否用列队的方法,点击鼠标就往数组里插入1,松开鼠标就插入2,然后开个定时器,10豪秒获取一次数组值,检测到1就发开始指令,检测到2就发停止指令, 同时把执行过的数组给删除或设为固定值如0;且是一个一个执行,也就是一条开始指令成功后,以发起下一条指令

这样做的目的就是为了,能够指令匹配,有开始就有停止,请问这样要怎么实现呢,自己试了好多次都没有成功,不知道是这想法就是不行,还是技术不够没成功,

有朋友会有麻烦给我解答下,谢谢
...全文
165 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
木头海上漂 2015-09-29
  • 打赏
  • 举报
回复
你这样的写法是mouseout和mouseon独立的,这个得先执行mouseon再执行mouseout的
jquery中有的,你可以查查看

还有就是
$.unbind("mouseon");
$.bind("mouseon", function(){

$.unbind("mouseout");
$.bind("mouseout", function(){

});
});
jsbuzhidao 2015-09-29
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
一般用变量判断下就可以了 var flag=0; function StartCgi(){ if(flag)return flag=1 ........................................ }; //松开鼠标 function StartCgi(){ flag=0 ........................................ };
先谢谢你的回答。 一开始也是这样做的,正常情况下是可以的,但是鼠标点击、松开速度快点或者指令返回慢点就不行了,所以才想到能不能用队列的方法
slwsss 2015-09-28
  • 打赏
  • 举报
回复
一般用变量判断下就可以了 var flag=0; function StartCgi(){ if(flag)return flag=1 ........................................ }; //松开鼠标 function StartCgi(){ flag=0 ........................................ };

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧