在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 新手,vue的mounted的問題

新手,vue的mounted的問題

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">{{value}}</div>
<script>
    new Vue({
        el: '#app',
        data(){
            return {value:42}
        },
        mounted(){
            setTimeout(this.a,1000)
        },
        methods:{
            a(){
                this.value++
                console.log(this.value)
                setTimeout(this.a,1000)
            }
        }
    })
</script>

這里的功能就是讓a一秒加一次,為什么在mounted和a()里面都setTimeout了一秒,這不就是兩秒的延遲才+1嗎。這段代碼的運(yùn)行過程是怎樣的?

回答
編輯回答
懶豬

mounted是vue實(shí)例掛載的事件鉤子函數(shù),所以它只會執(zhí)行一次,之后就是a方法內(nèi)不斷設(shè)置定時(shí)器。
也就是說,頁面打開,等vue實(shí)例掛載后,頁面顯示的value為42,之后每過1svalue值加1.
因?yàn)槟愕?code>a方法是立即加1的,所以mounted鉤子執(zhí)行時(shí),1s后會立即讓value值加1,并不會有兩個(gè)定時(shí)器相疊加為2s。

2017年4月12日 00:49
編輯回答
尤禮

每一秒后往事件任務(wù)隊(duì)列放入a,如果當(dāng)前隊(duì)列沒有其他任務(wù)執(zhí)行的話就是1秒執(zhí)行一次a

2017年6月14日 20:12