Promise(es6)和await,async(es7)

我是個小掛件發表於2018-12-13

參考連結
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();
複製程式碼
  1. promise函式裡是reject,那就會在catch裡面執行程式碼;
  2. promise函式裡是open,會執行try裡面的程式碼
  3. await後面等待的是一個結果,需要包含在async函式內,promise物件||return value||function函式
    一般是在async裡return返回值,如果沒有返回值,它會返回Promise.resolve(undefined),但也不會阻塞後面的語句執行;並且通過try{}catch{}來解決promise.reject()報錯的問題。
  4. async函式是返回的是一個promise物件,如Async就是一個promise物件,可以呼叫執行

總結:

  • es6的promise是var p=new Promise((o,c)=>{o(...)|c(...)})
  1. 為o時執行then,p().then((...)=>{})
  2. 為c時執行catch,p().cathc(()=>{})
  • es7升級版promise 是var p=new Promise((o,c)=>{o(...)|c(...)})+ async()=>{try{const t=await p()}catch(err){}}
  1. async裡面呼叫pp執行完返回 值
  2. 執行t後面的語句

相關文章