2
私はVueJSを学んでいて、この小さな練習ゲームを作成して、私の知識を向上させました。次のイベントループで警告を表示するにはどうすればいいですか?
http://jsfiddle.net/mzref4o0/1/
この攻撃方法はまた、勝者を決定します:
attack: function(isSpecialAttack) {
let youHurt = Math.floor(Math.random() * 10);
let monsterHurt = Math.floor(Math.random() * 10);
if (isSpecialAttack) {
youHurt = Math.floor(Math.random() * (20 - 10 + 1)) + 10;
monsterHurt = Math.floor(Math.random() * (20 - 10 + 1)) + 10;
}
this.you.bloodLevel -= youHurt;
this.monster.bloodLevel -= monsterHurt;
this.messages.push([
{id: this.getRandomId, turn: 'you', msg: 'PLAYER HTIS MONSTER FOR ' + monsterHurt},
{id: this.getRandomId, turn: 'monster', msg: 'MONSTER HTIS PLAYER FOR ' + youHurt}
])
if (this.you.bloodLevel <= 0 || this.monster.bloodLevel <= 0) {
if (this.you.bloodLevel <= 0) {
alert('you lost');
} else {
alert('you won');
}
}
},
問題が血バーが&メッセージがあるの低下を意味し、「攻撃」は起こる前に警告メッセージが表示されることです警告メッセージが表示された後に追加されます。その2つのことが起こった後にのみ、アラートの表示を行うにはどうすればよいですか?
私はこの問題がイベントループに起因すると考えています...しかし、それはすべて私が知っていることです。
は、あなたが約束を使用しようとしています。 funcitonを約束で包み込み、それを呼び出した後に。メッセージプッシュを実行します。 'nextTick()'を使って試してみてください。 [nextTick()のドキュメントはこちら](https://vuejs.org/v2/guide/reactivity.html) – zeidanbm