前提
解決方法は分かるのですが、何故以下のような状態になるのかご教授お願いします。
問題
下記のような5秒毎にAPIと通信を行いデータを更新するコードを実行した際、初回のデータ取得は行えるのですが2回目以降のPromise.all
がスキップされます。
js
1const que = [ 2 axios.get('******/hoge'), 3 axios.get('******/fuga') 4] 5new Vue({ 6 el: '#app', 7 data() { 8 return { 9 result: null, 10 result2: null 11 } 12 }, 13 mounted() { 14 this.getData() 15 }, 16 methods: { 17 async getData() { 18 const [data1, data2] = await Promise.all(que) 19 this.result = data1.hoge 20 this.result2 = data2.fuga 21 setTimeout(this.getData, 5000) 22 } 23 } 24})
しかし、次のように変更するとスキップされず期待する結果となります。
js
1new Vue({ 2 el: '#app', 3 data() { 4 return { 5 result: null, 6 result2: null 7 } 8 }, 9 mounted() { 10 this.getData() 11 }, 12 methods: { 13 async getData() { 14 const [data1, data2] = await Promise.all([ 15 axios.get('******/hoge'), 16 axios.get('******/fuga') 17 ]) 18 this.result = data1.hoge 19 this.result2 = data2.fuga 20 setTimeout(this.getData, 5000) 21 } 22 } 23})
なぜ変数に代入した状態とそうでない場合とで結果が異なるのでしょうか?
回答2件
あなたの回答
tips
プレビュー