オリジナルjs非同期キュータスク
2372 ワード
詳細
シーン:異なるajaxがデータを要求し、戻った後、実行するものをタスクにしてキューに入れ、キューに並べて実行します.
だからタスクキューを作りたいのですが、その後はマルチ消費者が消費を購読するモデルを作るかもしれません.今、簡単なタスクキューを出します.
Js Async Queue
var AsyncQueue={
queue:[],
init:function(){
window.addEventListener("message",function(e){
//AsyncQueueの呼びかけのみに応える
if(e.data==="AsyncQueue"){
e.stopPropagation();//事件の泡を止める
if(AsyncQueue.queue.length>0){
//キューの最初の#13を実行して削除します.
var _task=AsyncQueue.queue.shift();
_task.excute(_task.data);
}
}
},true);
},
addTask:function(task){
//キューに追加
AsyncQueue.queue.push(task);
window.postMessage("AsyncQueue","*");
}
}
//キュー初期化
AsyncQueue.init();
for(var i=0;i<10;i++){
var _task={
data:{name:i},
excute:function(param){
//シミュレーションバックグラウンドリクエスト
var _tt=Math.random()*1000;//一部の業務が速いため、一部の業務は遅い
document.getElementById("id"+param.name).innerHTML=「タスク実行中…」13;
setTimeout(function(){
console.info(param.name);
document.getElementById("id"+param.name).innerHTML=「タスク完了」;・13;
},_tt);
}
}
AsyncQueue.addTask(_task);
}
//時間を置いて加わるタスクのシミュレーション
setTimeout(function(){
var _uuid="test0001";
var oDiv=document.createElement('div');
oDiv.id=_uuid;
oDiv.style="width:100px;height:100px;border:1px solid #000;margin:5px;float:left;";
var container =document.getElementById('id9');
var node=container.nextSibling;
container.parentNode.insertBefore(oDiv, node);
var _task={
data:{name:_uuid},
excute:function(param){
//シミュレーションバックグラウンドリクエスト
var _tt=Math.random()*1000;//一部の業務が速いため、一部の業務は遅い
document.getElementById(param.name).innerHTML=「タスク実行中…」13;
setTimeout(function(){
console.info(param.name);
document.getElementById(param.name).innerHTML=「タスク完了」;・13;
},_tt);
}
}
AsyncQueue.addTask(_task);
},6000);
Hello Js Async Queue
シーン:異なるajaxがデータを要求し、戻った後、実行するものをタスクにしてキューに入れ、キューに並べて実行します.
だからタスクキューを作りたいのですが、その後はマルチ消費者が消費を購読するモデルを作るかもしれません.今、簡単なタスクキューを出します.
Js Async Queue
var AsyncQueue={
queue:[],
init:function(){
window.addEventListener("message",function(e){
//AsyncQueueの呼びかけのみに応える
if(e.data==="AsyncQueue"){
e.stopPropagation();//事件の泡を止める
if(AsyncQueue.queue.length>0){
//キューの最初の#13を実行して削除します.
var _task=AsyncQueue.queue.shift();
_task.excute(_task.data);
}
}
},true);
},
addTask:function(task){
//キューに追加
AsyncQueue.queue.push(task);
window.postMessage("AsyncQueue","*");
}
}
//キュー初期化
AsyncQueue.init();
for(var i=0;i<10;i++){
var _task={
data:{name:i},
excute:function(param){
//シミュレーションバックグラウンドリクエスト
var _tt=Math.random()*1000;//一部の業務が速いため、一部の業務は遅い
document.getElementById("id"+param.name).innerHTML=「タスク実行中…」13;
setTimeout(function(){
console.info(param.name);
document.getElementById("id"+param.name).innerHTML=「タスク完了」;・13;
},_tt);
}
}
AsyncQueue.addTask(_task);
}
//時間を置いて加わるタスクのシミュレーション
setTimeout(function(){
var _uuid="test0001";
var oDiv=document.createElement('div');
oDiv.id=_uuid;
oDiv.style="width:100px;height:100px;border:1px solid #000;margin:5px;float:left;";
var container =document.getElementById('id9');
var node=container.nextSibling;
container.parentNode.insertBefore(oDiv, node);
var _task={
data:{name:_uuid},
excute:function(param){
//シミュレーションバックグラウンドリクエスト
var _tt=Math.random()*1000;//一部の業務が速いため、一部の業務は遅い
document.getElementById(param.name).innerHTML=「タスク実行中…」13;
setTimeout(function(){
console.info(param.name);
document.getElementById(param.name).innerHTML=「タスク完了」;・13;
},_tt);
}
}
AsyncQueue.addTask(_task);
},6000);
Hello Js Async Queue