一次性掌握ES6/ES7異步處理
假定一個場景,等女朋友睡起來出去逛街,超過5s就不等了,自己打遊戲了 ...
ES6 Promise 處理方式
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)
})
}
ES7 Async/Await 處理方式
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