我想优先考虑我的功能。
$(document).ready(function(){
drawMap();
on showLinks() ready do drawChart();
});
我怎么能用 jQuery 做到这一点?
谢谢, Répás
我想优先考虑我的功能。
$(document).ready(function(){
drawMap();
on showLinks() ready do drawChart();
});
我怎么能用 jQuery 做到这一点?
谢谢, Répás
在 drawMap() 内部调用 showLinks() 在内部和最后调用 drawChart() showLinks()
正如加里在他的回答中已经提到的那样,如果您正在处理异步执行,您只想这样做。
您可能想看看jQuery 1.5 中引入的延迟。
在您的情况下,它看起来像这样:
$(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();
}
如果showLinks() & drawMaps()
不是异步的,那么就直接调用drawChart()
:
$(document).ready(function(){
drawMap();
showLinks();
drawChart();
});
否则提供回调showLinks()
:
function showLinks(callback)
{
/* your code */
callback();
}
$(document).ready(function(){
drawMap();
showLinks(drawChart);
});
很难分辨代码中什么是同步和异步,但无论如何提供回调,如上面的示例所示,是前进的方向。
你能从你的 showLinks() 函数中抛出一个自定义事件吗?然后你可以捕捉到这个事件并做出相应的反应
bind
和之间的好戏trigger
。这是文档