以下の例は、 なぜ関数間で非同期になる引数を持つ関数fct1を呼び出したのですか?機能の 実行は順序です:fct3、fct2、fct1代わりfct1、fct2、としてfct3パラメータを使用した非同期呼び出しの呼び出し方法
function fct1(param1) {
var d = $.Deferred();
setTimeout(function() {
console.log("fct1 : param1 =" + param1);
d.resolve();
}, 3000);
return d.promise();
};
function fct2() {
var d = $.Deferred();
setTimeout(function() {
console.log("fct2");
d.resolve();
}, 2000);
return d.promise();
};
function fct3() {
var d = $.Deferred();
setTimeout(function() {
console.log("fct3");
d.resolve();
}, 1000);
return d.promise();
};
var fct_array = [fct1(1), fct2, fct3];
var d = $.Deferred().resolve();
while (fct_array.length > 0) {
d = d.then(fct_array.shift());
}
それはだ "非同期" ではない "同期"それは最初の方が速いことを意味します... fct3は1000 fct2は2000 fct3は3000なので、すべてが完璧に動作します。 –
多分、タイムアウト –
のために、これらの関数をパラメータ(fct1、fct2、fct3)で順番に実行したいのですが、関数fc1のパラメータを追加すると関数間の同期が失われる理由がわかりません。 – collo21