摘要:一次性掌握異步處理假定一個場景,等女朋友睡起來出去逛街,超過就不等了,自己打游戲了處理方式寫法鏈式調用方法,只有當異步處理成功后回到用拿到異步處理成功后的數據異步處理出錯時,會調用獲取到異常也就是說方法里有兩個回調函數作為參數或者還有第二種
一次性掌握ES6/ES7異步處理
假定一個場景,等女朋友睡起來出去逛街,超過5s就不等了,自己打游戲了 ...ES6 Promise 處理方式
promise 寫法
promise鏈式調用方法,只有當異步處理成功后回到用.then(data => {}) 拿到異步處理成功后的數據
異步處理出錯時,會調用.then(err => {}) 獲取到異常
也就是說.then( data => {}, err => {}) 方法里有兩個回調函數作為參數
或者還有第二種寫法.then(data => {}).catch(err => {})
function waiting (ms) { return new Promise ( (resolve, reject) => { if(ms > 5000) { reject("long time") } else { setTimeout(() => { resolve(ms); }, ms) } }) } function main () { waiting(3000).then( success => { console.log(success); }, err => { console.log(err) }) } // 或者 function main() { waiting(3000).then(data => { console.log(data) }).catch(err => { console.log(err); }) }ES7 Async/Await 處理方式
async 表明這個函數里面有異步操作,await總是寫在async聲明的函數中的
遇到awit,函數就會停止執行,等待異步操作結束,再執行后面的語句
異步操作獲取的結果即為resolve回調函數的參數返回
異常即通過reject回調函數參數獲取
注意,捕獲異常時,我們往往需要在async函數體中使用 try catch 方式獲取異常
let sleep = ms => { return new Promise ( (resolve, reject) => { if(ms > 5000) { reject("long time") } else { setTimeout(function() { resolve(ms) } ,ms) } }) } let play = (ms) => { console.log(`I wait you ${ms} s`) } let main = async () => { try{ let result = await sleep(3000); play(result) } catch (err) { throw err } }注意:await等的是什么?是promise是承諾 返回的是resolve回調函數里面的數據
更多用法可以參考:Promise && Async/Await
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108628.html
摘要:它們都用于聲明變量。盲目使用替換后可能會導致預期意外的結果。有鑒于此,還是建議使用字符串,布爾和數字類型的數據類型。像使用這種下劃線命名約定在一個開源項目中,命名規則很難維持得一直很好,這樣經常會造成一些困擾。 今天群里有小伙伴跟我聊天,問了我幾個關于ES6的問題,我才意識到,大部分初學者在學習的過程中,都是學了HTML/CSS/JS之后就開始上手學習框架了,而對于ES6的重視程度卻不...
摘要:并且用驗證了中一系列的實質就是魔法糖的本質。抽絲剝繭我們首先看的編譯結果這是一個自執行函數,它接受一個參數就是他要繼承的父類,返回一個構造函數。 如果你已經看過第一篇揭秘babel的魔法之class魔法處理,這篇將會是一個延伸;如果你還沒看過,并且也不想現在就去讀一下,單獨看這篇也沒有關系,并不存在理解上的障礙。 上一篇針對Babel對ES6里面基礎class的編譯進行了分析。這一篇將...
閱讀 3938·2021-11-17 09:33
閱讀 3288·2021-10-08 10:05
閱讀 3116·2021-09-22 15:36
閱讀 1142·2021-09-06 15:02
閱讀 2774·2019-08-29 12:45
閱讀 1593·2019-08-26 13:40
閱讀 3404·2019-08-26 13:37
閱讀 424·2019-08-26 13:37