道歉我肯定是一個轉發;我真的很看好我的問題的答案(我也明白)。jQuery:在本地上下文中正確使用延遲(即沒有AJAX)
我想要學會做的是任意鏈功能,使他們必須在下一個發生之前完成,據我所知,這是jQuery's deferred()的目的。所以在下面的代碼中,我想象的應該是:
- 負載延遲對象中包含的函數執行;之後
- 包含在then()中的函數執行;之後
- done()中包含的函數執行。
宇宙中的每個教程使用$.when()
後$.ajax()
對象,這是無用的,如果所有的人希望是在本地範圍內執行順序的控制。
這是我一直想:
var preloadDone = false,
var testDone = false,
var load = $.deferred(function() {
//cacheImages() is a plugin, works fine
$("img.image-loader.preload").cacheImages();
preloadDone = true;
});
var loader = $.when(load)
.then(function() {
if (preloadDone) {
console.log("then called in sequence");
} else {
console.log("then called out of sequence"); // wrong order, every time
}
XBS.cache.cbDone = true;
}).done(function() {
if (XBS.cache.cbDone) {
console.log("even done was called in right sequence!"); // proper order, every time
} else {
console.log("done() wasn't called in order..");
}
});
load.resolve(); // nothing happens
// load(); also tried this; nothing happens
據我所知,這是相同的jQuery $.when()文檔中給出的例子。幫助嗎?
您想運行的功能一個又一個,因爲他們完成? – Tasos 2014-09-21 20:16:19
是的,我會在問題中澄清。 – Jonline 2014-09-21 20:16:44
我知道這樣做的一種方式,不適合作爲你的答案 – Tasos 2014-09-21 20:17:46