我正在做一個小骰子游戲來學習。 我所做的是我碾壓骰子X的次數,不斷降低隨機數直到它達到最終值,這就是「獲勝數」。jQuery Promise with chained setTimeouts
但我想在骰子上執行scrumble 1。想象一下,我得到了2.後來我做了一些縮放效果。 我在想我可以通過使用承諾來實現這一點,但並不適合我,我不知道我錯過了什麼。
這裏的JS代碼:
var counter = 0.8;
var diceNumber = 0;
var rollDice = function(diceId){
var dfd = new $.Deferred();
$('#' + diceId).removeClass('idle');
counter *= 1.2;
diceNumber = Math.round(Math.random()*5) + 1;
$('#' + diceId).removeClass();
$('#' + diceId).addClass('dice_' + diceNumber);
if(counter < 800) {
timeout = setTimeout(rollDice, counter, diceId);
}else{
$('.winner').text(diceNumber);
$('#' + diceId).removeClass();
$('#' + diceId).addClass('animate');
$('#' + diceId).addClass('dice_' + diceNumber)
.animate({ zoom: '1.3' }, 200)
.animate({ zoom: '1' }, 100);
dfd.resolve();
return dfd.promise();
}
}
var startToDice = function() {
rollDice('dice_1').then(rollDice('dice_2'));
}
startToDice();
什麼它最後做的是同時運行同時切成小方塊。
有什麼建議嗎?謝謝。
只有你的'else'分支返回一個承諾? – Bergi
該承諾總是同步解決? – Bergi
'then'需要一個回調函數,而不是一個調用的結果! – Bergi