機能を優先したいのですが。
$(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()を呼び出しますshowLinks()内および最後でdrawChart()を呼び出します
ゲイリーが彼の答えですでに述べたように、非同期実行を扱っている場合にのみこれを行いたいと思うでしょう。
jQuery1.5で導入された遅延を確認することをお勧めします。
あなたの場合、それは次のようになります:
$(function(){
drawMap();
$.when(showLinks())
.then(drawChart);
});
上記を機能させるには、関数がpromiseshowLinksを返し、実行が完了するとトリガーされることを確認する必要があります。resolve
function showLinks(){
var dfd = $.Deferred();
// Add your asynchronous code here
setTimeout(function(){
console.log("Links shown!");
dfd.resolve();
}, 1000);
return dfd.promise();
}
jsFiddleでテストケースを確認してください
非同期でない場合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です。これがドキュメントです