ES6新特性之Promise
生活随笔
收集整理的這篇文章主要介紹了
ES6新特性之Promise
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Promise
所謂Promise,簡單說就是一個容器,里面保存著某個未來才會結束的事件(通常是一個異步操作)的結果。從語法上說,Promise 是一個對象,從它可以獲取異步操作的消息。Promise 提供統一的 API,各種異步操作都可以用同樣的方法進行處理。
我們可以通過Promise的構造函數來創建Promise對象,并在內部封裝一個異步執行的結果。
<script>const p = new Promise((resolve, reject) => {// 寫異步的操作,通常是寫ajax的操作setTimeout(() => {// 異步操作(模擬)let num = Math.random();if(num < 0.5){// 認為成功了resolve("成功了 " + num);}else{// 認為失敗了reject("失敗了 " + num);}});});console.log("ok");p.then(value => {console.log(value);}).catch(reason => {console.log(reason);});console.log("ok2");</script>語法:
const promise = new Promise(function(resolve, reject) { // ... 執行異步操作 if (/* 異步操作成功 */){ resolve(value);// 調用resolve,代表Promise將返回成功的結果 } else { reject(error);// 調用reject,代表Promise會返回失敗結果 } });這樣,在promise中就封裝了一段異步執行的結果。
如果我們想要等待異步執行完成,做一些事情,我們可以通過promise的then方法來實現,語法:
promise.then(function(value){ // 異步執行成功后的回調 });如果想要處理promise異步執行失敗的事件,還可以跟上catch:
promise.then(function(value){ // 異步執行成功后的回調 }).catch(function(error){ // 異步執行失敗后的回調 })示例:
const p = new Promise(function (resolve, reject) { // 這里我們用定時任務模擬異步 setTimeout(() => { const num = Math.random(); // 隨機返回成功或失敗 if (num < 0.5) { resolve("成功!num:" + num) } else { reject("出錯了!num:" + num) } }, 300) }) // 調用promise p.then(function (msg) { console.log(msg); }).catch(function (msg) { console.log(msg); })?
總結
以上是生活随笔為你收集整理的ES6新特性之Promise的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6新特性之扩展运算符
- 下一篇: ES6新特性之Set和Map