【ES8(2017)】async / await
生活随笔
收集整理的這篇文章主要介紹了
【ES8(2017)】async / await
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
async 和 await 是一種更加優雅的異步編程解決方案,是Promise 的拓展。
在我們處理異步的時候,比起回調函數,Promise的then方法會顯得較為簡潔和清晰,但是在處理多個彼此之間相互依賴的請求的時候,就會顯的有些繁瑣。這時候,用async/await更加優雅。
我們知道 JavaScript 是單線程的,使用 Promise 之后可以讓我們書寫異步操作更加簡單,而 async 是讓我們寫起 Promise 像同步操作。
基本用法
前面添加了async的函數在執行后都會自動返回一個Promise對象:
async function foo() {return 'hello' } console.log(foo()) // Promise 對象await后面需要跟異步操作,不然就沒有意義,而且await后面的Promise對象不必寫then,因為await的作用之一就是獲取后面Promise對象成功狀態傳遞出來的參數。
function timeout() {return new Promise(resolve => {setTimeout(() => {console.log(1)resolve('success')}, 1000)}) }async function foo() {let res = await timeout()console.log(res)console.log(2) } foo() // 1 success 2在async函數中使用await,那么await這里的代碼就會變成同步的了,意思就是說只有等await后面的Promise執行完成得到結果才會繼續下去,await就是等待。
應用
按順序讀取a.json、b.json、c.json,使用async/await該如何實現:
function request(url) {return new Promise(resolve => {ajax(url, res => {resolve(res)})}) } async function getData() {let res1 = await request('static/a.json')console.log(res1)let res2 = await request('static/b.json')console.log(res2)let res3 = await request('static/c.json')console.log(res3) } getData()await 只能在 async 標記的函數內部使用,單獨使用會觸發 Syntax error。
總結
以上是生活随笔為你收集整理的【ES8(2017)】async / await的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python下载邮件附件_Python
- 下一篇: android 点击两次退出,Andro