我需要運行多個並行的功能裏面promise.then() 我試圖用這樣的代碼波紋管,但它的工作不正確:如何解決幾個遞延內`promise.then()`
function fadeElement(selector){
return function() {
return $(selector).fadeOut(400).promise();
}
}
function runParallel(owner, promises) {
return function() {
var differed = new $.Deferred();
var resolveDiffered = function() { differed.resolve(); };
$.when.apply(owner, promises).
then(resolveDiffered);
return differed.promise();
}
}
FormInput.prototype.ReloadPage = function(){
var firstOne = fadeElement('#element_Id_1');
var firstTwo = fadeElement('#element_Id_2');
var firstThree = fadeElement('#element_Id_3');
var secondOne = fadeElement('#element_Id_4');
var thirdOne = fadeElement('#element_Id_5');
var thirdTwo = fadeElement('#element_Id_6');
$.when(firstOne(), firstTwo(), firstThree())
.then(secondOne)
.then(
runParallel(this, [thirdOne(), thirdTwo()])
);
}
firstOne
,firstTwo
,firstThree
,secondOne
是沒有400ms的時間運行。
thirdOne
,thirdTwo
- 不會運行在所有。
我想我有一個錯誤在runParallel
,但我沒有帶足夠的知識understend哪裏。我是這麼認爲的,becouse這個代碼將工作:
$.when(firstOne(), firstTwo(), firstThree())
.then(secondOne)
.then(thirdOne)
.then(thirdTwo);
runParallel不會做任何事情,它只會返回一個函數...你試過運行那個函數嗎? –
@Crisim沒有,因爲那時()有參數,即必須是一個函數,將返回的承諾目標。 –
對不起,我看錯.... –