參考連結
await必須寫在async的作用域內
const p = () => {
return new Promise((open, reject) => {
setTimeout(() => {
var value=200
open(value)//傳遞結果
}, 2000);
});
};
const Async = async () => {
try {
const t = await p();//await必須寫在async裡面
console.log(t);
} catch (err) {
console.log(err);
}
};
Async();
複製程式碼
- promise函式裡是reject,那就會在catch裡面執行程式碼;
- promise函式裡是open,會執行try裡面的程式碼
- await後面等待的是一個結果,需要包含在async函式內,promise物件||return value||function函式
一般是在async裡return返回值,如果沒有返回值,它會返回Promise.resolve(undefined),但也不會阻塞後面的語句執行;並且通過try{}catch{}來解決promise.reject()報錯的問題。 - async函式是返回的是一個promise物件,如Async就是一個promise物件,可以呼叫執行
總結:
- es6的promise是
var p=new Promise((o,c)=>{o(...)|c(...)})
- 為o時執行then,p().then((...)=>{})
- 為c時執行catch,p().cathc(()=>{})
- es7升級版promise 是
var p=new Promise((o,c)=>{o(...)|c(...)})
+async()=>{try{const t=await p()}catch(err){}}
- 在
async
裡面呼叫p
等p
執行完返回 值 - 執行t後面的語句