您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“ES6中Promise怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ES6中Promise怎么用”這篇文章吧。
Promise 是一個構造函數,用來封裝異步操作并可以獲取其成功或失敗的結果
1、 Promise 構造函數 Promise(excutor){}
2、 Promise.prototype.then 有兩個參數,兩個參數都是函數,
Promise對象成功狀態執行then中第一個函數,失敗執行第二個函數
3、 Promise.prototype.catch
// 實例化 const p = new Promise((resolve, reject) => { // 通過resolve,reject這兩個函數來改變Promise對象的狀態, // resolve會改變p的狀態為成功,reject會改變p的狀態為失敗,然后去執行then里面的方法 // 執行異步操作,以定時器為例,定時器也是異步 setTimeout(()=>{ //let data = '異步執行成功'; // resolve(data);// 調用resolve函數, p會變成一個成功的狀態,會執行then中的第一個方法 let err = '執行失敗'; reject(err);// 調用reject函數,p會變成一個失敗的狀態,會執行then中的第二個方法 }, 1000) }) // 成功會調用 promise 對象 then 方法 p.then(value => {// 成功 // console.log(value);// 控制臺打印:異步執行成功 }, reason => {// 失敗 console.error(reason) })
Promise.prototype.then 特性
// then方法的返回結果是Promise對象,對象狀態由回調函數的執行結果決定 const p = new Promise((resolve, reject) => { setTimeout(()=>{ resolve('成功'); reject('失敗'); }, 1000); }); // then 的返回結果是一個Promise對象,就是result也是一個Promise對象,它的狀態由函數的執行結果決定的 const result = p.then(value => { console.log(value); // 1.如果返回的結果是 非Promise 類型的屬性,狀態為成功,返回值return 中的值 // 如果不寫return,函數內部不寫return返回結果是undefined,也不是Promise對象,狀態也是成功 // return 123; // 2.是 promise 對象, 該對象返回的狀態就決定了then方法返回promise對象狀態 return new Promise((resolve, reject)=>{ // resolve('ok');// then方法返回promise對象狀態為成功 reject('no');// then方法返回promise對象狀態為失敗 }) // 3.拋出錯誤 then方法返回promise對象狀態為失敗,錯誤值為拋出錯誤的值 throw new Error('出錯了'); }, reason => { console.err(reason); }); console.log(result); // 綜上總結,then方法可以鏈式調用 可以改變回調域的現象 p.then(value=>{}, reason=>{}) .then(value()=>{}).then();
舉例:多個請求都返回之后,獲取其中的數據
const p = new Promise((resolve, reject)=>{ resolve('第一次返回成功') }); p.then(value=>{ return new Promise((resolve, reject)=>{ resolve([value, '第二次返回成功']) }); }).then(value=>{ return new Promise((resolve, reject)=>{ resolve([...value, '第三次返回成功']) }); }).then(value=>{ console.log(value);// 返回值為三次請求都返回成功以后的值 });
以上是“ES6中Promise怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。