1)I具有的jquery的鏈然後(),是這樣的:的Javascript然後()鏈接 - 這遞延確實第二然後()對應於?
someAjax().then(function(val) { console.log("done 1: " + val); return val + 1; },
function(val) { console.log("fail 1: " + val); return val + 2; },
function(val) { console.log("prog 1: " + val); return val + 3; }
).then(function(val) { console.log("done 2: " + val) },
function(val) { console.log("fail 2: " + val) },
function(val) { console.log("prog 2: " + val) }
)
據我所知,第一的三個功能(三個參數),則()對應於Deferred對象的狀態來自someAjax()。
但是,我不明白,什麼Deferred對象做的第二然後對應的三個函數(args)?例如,如果(或者是沒有可能),那麼,什麼每個第一的三個功能的()可能返回自己的Deferred對象?
我覺得我可以在這裏誤解的東西。感謝任何澄清。
////////////////////////////////////////////// //////
2)我有另一個鏈接是這樣的:
$.getJSON(url).then(
doneFunction1,
errorFunction1
).then(
doneFunction2
});
的doneFunction1看起來是這樣的:
function doneFunction1(val){
if(val > 1)
return $.ajax(url2);
}
所以這並不總是會返回一個承諾,因爲你請參閱,取決於val
。 如果它沒有返回Promise(例如val < 1),那麼第二步如何繼續?會導致錯誤?因爲據我所知,沒有承諾打電話then()。我的猜測是,它可能只是調用$.getJSON
的第一個Promise的then(),但我可能是錯的。
基本上,我試圖在'val < 1'時根本沒有第二個then()
。可能嗎?
它指的是無論你從第一。然後承諾 – JordanHendrix
'.then'一般只需要兩個功能,第一個被稱爲回當承諾解決時,第二個被拒絕? – adeneo
注意到你正在使用jQuery,而不是正確的A + promise,在這裏將是相當重要的! – adeneo