は私が怒鳴るようなコードを使用しようとした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
,- 全く実行されません。
私はrunParallel
に間違いがあると思うが、私はどこに注意を向けるべきか十分な知識はない。私は、このコードは動作しますbecouse、そう思う:
$.when(firstOne(), firstTwo(), firstThree())
.then(secondOne)
.then(thirdOne)
.then(thirdTwo);
、それだけでは以下となります。他の約束が完了したことが後まで、それぞれの約束生成関数が呼び出されたときの配置を変更すると、フェージングプロセスが遅延することができます関数を返す...その関数を実行しようとしましたか? –
@Crisimいいえ、then()にはパラメータがあります。これは関数でなければならず、それはpromiseオブジェクトを返します。 –
申し訳ありませんが、私は誤った.... –