Android中五種常用對話方塊的使用
阿新 • • 發佈:2020-11-30
promise和async/await都是處理非同步請求
/** * 註釋: *js中的同步、非同步問題通常是指ajax回撥: * 1)同步:同比呼叫,程式發出ajax呼叫後就暫停,到伺服器有迴應才繼續 * 2)非同步:非同步呼叫,程式發出ajax呼叫後立即執行後面程式碼,伺服器返回資訊後會自動觸發回撥函式進行處理 * 3)優缺點:非同步程式不會程式卡頓現象,同步用於需要立即獲得結果並實時處理的情況 */
一、promise的基本用法:
//Promise物件,簡單來說就是一個容器,裡面儲存著非同步操作的最終完成 (或失敗)及其結果值
1)基本語法:
let p = new Promise((resolve,reject)=>{//.... resolve('success') }); p.then(result=>{ console.log(result) ; //success });
2)三個狀態 : pending (執行中) 、success(成功) 、 rejected (失敗)
3)鏈式呼叫:
let p = new Promise((resolve,reject)=>{ reject('error'); }); //Promise.prototype.catch用於指定Promise狀態變為rejected時的回撥函式,可以認為是.then的簡寫形勢,返回值跟.then一樣p.cath(result=>{ console.log(result); })
二、async、await
async用於宣告一個函式是非同步的,而await可以認為是async wait的簡寫,等待一個非同步方法執行完成。
/**
* Async/Await讓 try/catch 可以同時處理同步和非同步錯誤 * async,await : 將非同步強行轉換為同步處理,async/await是寄生於Promise的語法糖 */
三、錯誤捕獲:
// 如果是reject狀態,可以用try-catch捕捉 , await關鍵字只能用在aync定義的函式內let p =new Promise((resolve,reject)=>{ setTimeout(()=>{ reject('error') },1000); }) async function demo(params){ try{ let result = await p; } catch(e) { consloe.log(e) } } demo();