nuxtで最後にボタンを押して5秒待ってから処理を開始するプログラムを書こうと思ったのですが、以下のコードではうまくいきません。
console.log(date, "date");でログが終わってしまいます。
dataの中身を変更してしまっているので再レンダリングされてしまっているのが原因かと思ったのですが、回避方法が思いつきませんでした。
<template> <div id="app"> <button @click="waitFunc">push</button> </div> </template> <script> export default { name: "App", data: function () { return { start: "", started: false, timer: 0, count: 0, PassageID: "", }; }, methods: { waitFunc: function () { this.count++; this.setStart(); console.log("pushed!", this.start); if (!this.started) this.startManeger(); }, setStart: function () { this.start = new Date(); this.timer = 0; }, startManeger: function () { console.log("started maneger"); this.PassageID = setInterval(this.detector(), 20); }, detector: function () { let date = (new Date() - this.start) / 1000; console.log(date, "date"); let time = this.timer + 1; if (date === time) { this.timer++; console.log(this.timer, "timer"); } if (this.timer >= 5) { console.log("5sec"); //押されず5秒経過 clearInterval(this.PassageID); this.PassageID = ""; this.timer = 0; //send count this.count = 0; this.start = ""; this.started = false; } }, }, }; </script>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/27 01:54