出隊函數具有以下遞歸結構。我認爲嵌套的dequeue
調用應該在fn
之前發生,因此它會保持FIFO的順序嗎?jQuery.dequeue遞歸順序
dequeue: function(elem, type) {
fn.call(elem, function() {jQuery.dequeue(elem, type);
})
預先感謝您!
出隊函數具有以下遞歸結構。我認爲嵌套的dequeue
調用應該在fn
之前發生,因此它會保持FIFO的順序嗎?jQuery.dequeue遞歸順序
dequeue: function(elem, type) {
fn.call(elem, function() {jQuery.dequeue(elem, type);
})
預先感謝您!
如果你看一下完整的代碼(如下圖),fn
是在隊列列表中的第一項(因爲shift()使用fn = queue.shift()
),所以你需要調用fn
第一。
了我們使用pop()(這將給數組中的最後一個項目),我們將不得不調用dequeue()
然後調用fn
dequeue: function(elem, type) {
type = type || "fx";
var queue = jQuery.queue(elem, type),
fn = queue.shift(),
defer;
// If the fx queue is dequeued, always remove the progress sentinel
if (fn === "inprogress") {
fn = queue.shift();
}
if (fn) {
// Add a progress sentinel to prevent the fx queue from being
// automatically dequeued
if (type === "fx") {
queue.unshift("inprogress");
}
fn.call(elem, function() {
jQuery.dequeue(elem, type);
});
}
if (!queue.length) {
jQuery.removeData(elem, type + "queue", true);
handleQueueMarkDefer(elem, type, "queue");
}
}
謝謝Arun抽空回答。但是fn在被調用時就像fn.call(elem,function(){jQuery.dequeue(elem,type);});這是否意味着下一次出隊應該先執行? – 2015-03-25 14:05:43
'fn.call()'在調用完成後會調用'fn',第二個參數(我認爲它是一個回調函數)會被調用,它將再次調用dequeue – 2015-03-25 14:27:30
其中的jQuery的版本是 – 2015-03-25 08:13:37
@ArunPJohny 1.6.2 – 2015-03-25 08:33:25