單純最近發覺新開發的EventMachine有漏封包的關係,還害我去debug JavaScript的部分…
不過因為這樣,我寫了一個JavaScript Event Queue的function,以後說不定用得到才是
//JavaScript Event Queue
//define
var fQueue = (function(){
var queue = {};
return{
add:function(n,f){
queue[n]?queue[n].push(f):queue[n]=[f];
},
goNext:function(n){
n=queue[n].shift();n&&n();
}
};
}());
//use
fQueue.add('q_name' , function(){
//your code here
fQueue.goNext('q_name');
});
fQueue.goNext('q_name');
正題,簡單的來說這篇很容易解決,因為Thread share本身通常實作為Array,然後把Array換成Thread的Queue即可,類似原本的
#ruby code#
$queue = []
#fix to
$queue = Queue.new
其他大概都相同,不過如果你有發現queue本身沒有動作或是.pop()不出東西的話,你可以嘗試使用.pop(true) << 不過這點要小心就是了,因為如果為empty一定會噴Error
解決的話…我不愛用rescue,所以多一次判定即可,類似
#ruby code#
unless $queue.empty?
while temp = $queue.pop(true)
#your code here
break if $queue.empty?
end
end
yoo00o打完收工 :)
沒有留言:
張貼留言