node8
已經開始正式支持async
和await
的特性了辖众,利用這兩個特性寫出來的代碼,邏輯更加清晰了载荔,看上去也更加優(yōu)雅了桅滋。可是身辨,卻也會存在一定的問題:
Promise
話不多說丐谋,上代碼
async function render(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log("end");
})
})
};
async function run(){
console.log("before render");
await render();
console.log("after render");
};
run();
這個代碼應該打印什么結果呢?
結果如下
before render
end
奇怪的問題產生了,after end
哪里去了煌珊?
細心的同學可能已經發(fā)現号俐,render
函數中的Promise
并沒有執(zhí)行resolve
或者reject
方法
這個時候,其實代碼執(zhí)行到console.log("end")
的時候就已經結束了定庵,而不會再向下執(zhí)行吏饿,所以使用的時候要注意(在使用nuxt.render的時候,當加載靜態(tài)文件的時候蔬浙,后面的函數就都會丟失猪落,不會執(zhí)行,具體看這里)畴博。