1. 程式人生 > >vue 鉤子函式 使用async await

vue 鉤子函式 使用async await

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>vue 鉤子函式 使用async await</title>
    </head>
    <body>
        <div id="app">
            <div v-for="item in list">
                {{ item }}
            <
/div> </div> <script src="https://cdn.bootcss.com/vue/2.5.17/vue.min.js"></script> <script type="text/javascript"> var app = new Vue({ el: '#app', data: { list: [1, 2, 3] }, async
created(){ // 最先輸出3 console.log(3) await setTimeout(()=>{ // 1輸出的時間依賴於 定時間隔 console.log(1) },100) // 5的輸出順序也不是在1後面 console.log(5) }
, async mounted(){ // 其次輸出4 console.log(4) await setTimeout(()=>{ // 2輸出的時間依賴於 定時間隔 console.log(2) },100) // 6的輸出順序也不是在2後面 console.log(6) } }) </script> </body> </html>

通過設定created和mounted中定時時間不同,檢視控制檯輸出順序。

完全亂套!

只能保證最先輸出3 其次輸出4。

await後的 5 和 6 也不是在await後輸出。

結論是:所有的鉤子函式都只是在指定時間執行而已,框架並不關心它們執行的結果,所以你要做的是將async和await放到真正有非同步的methods的方法中。