原本利用callback取得非同步資料的寫法
在使用async時 可用以下方式改寫
ㄧ.原本要被執行的各個執行method 都需改成回傳Promise
1.原method 利用callback取得結果
var getData = (callback)=>{
queryDB((err,result)=>{
resultObj = {
err:err
data:result
}
callback(resultObj)
})
}
2.method 改成return Promise
透過resolve與reject取得結果
let getData = ()=>{
return new Promise((resolve,reject)=>{
queryDB((err,result)=>{
resultObj = {
err:err
data:result
}
if(err){
//完成
resolve(resultObj)
}else{
//錯誤
reject(resultObj)
}
})
})
}
二.使用async
1.原使用單位,直接呼叫,由callback取得結果
getData((resultObj)=>{
console.log(resultObj)
})
2.改用async
需先定義一個async function,在aync function內去執行
透過try catch去取得正確與錯誤的資訊
const run = async ()=>{
try{
//取得結果,即是取得resolve傳進來的內容
let resultObj = await lodaMethod()
}catch (err) {
//錯誤攔截 ,即是取得呼叫reject傳進來的內容
console.log(err)
}
}
run()
沒有留言:
張貼留言