我想優先考慮我的函數。jQuery在自己的函數準備就緒時做些什麼
$(document).ready(function(){
drawMap();
on showLinks() ready do drawChart();
});
我該如何做到這一點與jQuery?
感謝,REPAS
我想優先考慮我的函數。jQuery在自己的函數準備就緒時做些什麼
$(document).ready(function(){
drawMap();
on showLinks() ready do drawChart();
});
我該如何做到這一點與jQuery?
感謝,REPAS
正如Gary在他的回答中已經提到的,如果您正在處理異步執行,您只想執行此操作。
您可能想看看在jQuery 1.5中引入的deferreds。
在你的情況下,它會是這個樣子:
$(function(){
drawMap();
$.when(showLinks())
.then(drawChart);
});
爲了使上述工作,必須確保該showLinks
函數返回一個promise,它觸發resolve
一旦它執行完畢。
function showLinks(){
var dfd = $.Deferred();
// Add your asynchronous code here
setTimeout(function(){
console.log("Links shown!");
dfd.resolve();
}, 1000);
return dfd.promise();
}
並且當函數完成時調用dfd.resolve() – 2011-05-18 12:55:32
@Gary的確如此!我剛剛在jsFiddle上放了一個測試用例。在我的回答中添加了一個鏈接! – mekwall 2011-05-18 13:03:00
調用showLinks()內drawMap()調用 drawChart()內,並在年底showLinks()
這對我不好,我想保留後續結構。 – 2011-05-18 12:46:51
檢查下面,這很有趣 – beerwin 2011-05-18 12:58:07
你能扔從showLinks()函數的自定義事件?然後你可以捕捉到這個事件並作出相應的反應。
這是bind
和trigger
之間的好戲。這是docs
如果showLinks() & drawMaps()
是不是異步然後就打電話drawChart()
後直:
$(document).ready(function(){
drawMap();
showLinks();
drawChart();
});
否則提供一個回調showLinks()
:
function showLinks(callback)
{
/* your code */
callback();
}
$(document).ready(function(){
drawMap();
showLinks(drawChart);
});
很難說出代碼中什麼是和不是同步和異步,但在任何情況下,提供回調(如上例所示)都是前進的方向。
如果showLinks被定義在當前塊之上的SCRIPT塊中,那麼它已經準備就緒。 – 2011-05-18 12:47:10