下面的例子: 爲什麼當我調用功能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