所以基本上我想要做的是有一個函數隊列,我可以添加到。這些函數被假設爲像在requestAnimationFrame中一樣繪製畫布。js函數隊列
我已經試過什麼:
var drawQueue = [];
function animate() {
while (drawQueue.length !== 0) {
drawQueue.shift()();
}
requestAnimationFrame(function() {
animate();
});
}
有了,我試圖添加的東西,如:
drawQueue.push(drawthing(0,0,0,0));
這會運行的功能,推動未定義的陣列,該怎麼做工作,如果你只是這樣做:
drawQueue.push(function() {
console.log("derp");
});
或
drawQueue.push(functionName); //with no args
但這裏的問題是,我需要傳遞參數給我打電話的大多數函數。
我的第二次嘗試:
var drawQueue = [];
function animate() {
while (drawQueue.length !== 0) {
var data = drawQueue.shift();
Object.apply(data.func, data.args);
}
requestAnimationFrame(function() {
animate();
});
}
,同時增加功能,隊列,如:
drawQueue.push({func: functionName, args: [0,0,0,0]});
,但我無法得到那個工作,要麼,不是100%如何使用Object.apply ()以及它在做什麼...
所以我的問題是我該如何去做我的函數隊列還是有更好的方法來做到這一點?
如果你打算存儲函數和參數,你可能還需要存儲上下文。 –
@JuanMendes - 這取決於上下文是否需要全局對象以外的東西。他們在最初的例子中似乎並不需要,但顯然這將是更爲一般的解決方案。 – jfriend00
可能爲什麼我更喜歡第一種解決方案,讓調用者根據參數和上下文來決定綁定什麼 –