2つの関数があり、それらの間で同期したい最初の関数は非同期関数です。最初の関数から結果を取得したときにのみ、2番目の関数を呼び出したいこのコードを試しました
$.when(update().then(function (data) {
alert(1);
$.when(func1(),func2()).then( function(dataFunc1,dataFunc2) {});
});
update : function(){
var dfd = $.Deferred();
d3.json("test.json", function(json) {
var data = createData()
dfd.resolve(data);
return dfd.promise();
}};
更新が呼び出されてからd3、jsonが呼び出され、非同期関数であるためd3、jsonのロジックが実行されないという問題が発生すると、alert(1)が発生します。
更新機能が終了し、d3.jsonからのデータが得られた場合にのみ、alert(1)が発生すると思いました。
私は何か見落としてますか ?resloveとpromiseについても読みましたが、パラメーターを渡す必要がある場合にのみresloveを使用する必要がありますか?promiseを使用する必要がある場合は?