ES6 Promise基礎(chǔ)用法(resolve、reject、then、catch,all)
在 JavaScript 中,Promise 是一種用于處理異步操作的對(duì)象。它允許開發(fā)者以一種更清晰和更可控的方式來(lái)處理異步操作,避免回調(diào)地獄的問題。Promise 對(duì)象有以下幾個(gè)狀態(tài):
Pending:初始狀態(tài),表示異步操作正在進(jìn)行中。
Fulfilled:表示異步操作成功完成。
Rejected:表示異步操作失敗。
Promise 對(duì)象提供了兩個(gè)方法來(lái)改變其狀態(tài):resolve 和 reject。then 和 catch 方法用于處理 Promise 的成功和失敗狀態(tài)。all 方法用于等待一組 Promise 實(shí)例都完成。
以下是 Promise 的基礎(chǔ)用法詳解:
創(chuàng)建一個(gè) Promise: 使用 new Promise() 創(chuàng)建一個(gè)新的 Promise 對(duì)象,并傳入一個(gè)函數(shù)作為參數(shù)。這個(gè)函數(shù)稱為執(zhí)行器(executor),它接受兩個(gè)參數(shù):resolve 和 reject。resolve 函數(shù)用于將 Promise 的狀態(tài)設(shè)置為 fulfilled,而 reject 函數(shù)用于將 Promise 的狀態(tài)設(shè)置為 rejected。
const promise = new Promise((resolve, reject) => { // 異步操作 if (/* 異步操作成功 */) { resolve(/* 成功的結(jié)果 */); } else { reject(/* 失敗的原因 */); } });
使用 then 方法: then 方法用于處理 Promise 的 fulfilled 狀態(tài)。它接受兩個(gè)參數(shù):一個(gè)函數(shù)用于處理成功的結(jié)果,另一個(gè)函數(shù)用于處理失敗的結(jié)果(可選)。
promise.then((result) => { // 成功的回調(diào)函數(shù) console.log(result); }, (error) => { // 失敗的回調(diào)函數(shù)(可選) console.error(error); });
使用 catch 方法: catch 方法用于處理 Promise 的 rejected 狀態(tài)。它相當(dāng)于只傳入失敗回調(diào)函數(shù)的 then 方法。
promise.catch((error) => { // 失敗的回調(diào)函數(shù) console.error(error); });
使用 all 方法: all 方法用于等待一組 Promise 實(shí)例都完成。它返回一個(gè)新的 Promise 對(duì)象,當(dāng)所有的 Promise 實(shí)例都成功時(shí),這個(gè)新的 Promise 對(duì)象才會(huì)成功;如果有任何一個(gè) Promise 實(shí)例失敗,那么這個(gè)新的 Promise 對(duì)象也會(huì)失敗。
const promises = [promise1, promise2, promise3]; Promise.all(promises).then((results) => { // 所有 Promise 實(shí)例都成功時(shí)的回調(diào)函數(shù) console.log(results); }).catch((error) => { // 任何一個(gè) Promise 實(shí)例失敗時(shí)的回調(diào)函數(shù) console.error(error); });
使用 race 方法: race 方法用于等待一組 Promise 實(shí)例中的任意一個(gè)完成。它返回一個(gè)新的 Promise 對(duì)象,當(dāng)?shù)谝粋€(gè) Promise 實(shí)例完成時(shí),這個(gè)新的 Promise 對(duì)象就會(huì)完成,無(wú)論其是成功還是失敗。
const promises = [promise1, promise2, promise3]; Promise.race(promises).then((result) => { // 第一個(gè) Promise 實(shí)例完成時(shí)的回調(diào)函數(shù) console.log(result); }).catch((error) => { // 第一個(gè) Promise 實(shí)例失敗時(shí)的回調(diào)函數(shù) console.error(error); });
到此這篇關(guān)于ES6 Promise基礎(chǔ)用法(resolve、reject、then、catch,all)的文章就介紹到這了,更多相關(guān)ES6 Promise用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)無(wú)限滾動(dòng)列表
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)無(wú)限滾動(dòng)列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Chrome調(diào)試折騰記之JS斷點(diǎn)調(diào)試技巧
這篇文章主要介紹了Chrome調(diào)試折騰記之JS斷點(diǎn)調(diào)試技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09JS window.opener返回父頁(yè)面的應(yīng)用
網(wǎng)上支付開發(fā)分為支付平臺(tái)和客戶端兩部分。當(dāng)客戶端進(jìn)入支付平臺(tái)時(shí),需要在新窗體打開支付平臺(tái)頁(yè)面。2009-10-10JS運(yùn)動(dòng)特效之完美運(yùn)動(dòng)框架實(shí)例分析
這篇文章主要介紹了JS運(yùn)動(dòng)特效之完美運(yùn)動(dòng)框架,結(jié)合實(shí)例形式分析了javascript針對(duì)運(yùn)動(dòng)中的元素屬性檢測(cè)與判斷相關(guān)操作技巧,需要的朋友可以參考下2018-01-01js實(shí)現(xiàn)前端界面導(dǎo)航欄下拉列表
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)前端界面導(dǎo)航欄下拉列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08uni-app基本的數(shù)據(jù)綁定v-bind,v-for,v-on:click詳解
這篇文章主要介紹了uni-app基本的數(shù)據(jù)綁定v-bind,v-for,v-on:click,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08基于JavaScript實(shí)現(xiàn)屏幕滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)屏幕滾動(dòng)效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01動(dòng)態(tài)加載JavaScript文件的3種方式
第一種是使用document.write/writeln()方式,第二種使用jQuery,第三種是使用原生js方法,感興趣的小伙伴們可以參考一下2018-05-05不錯(cuò)的JS中變量相關(guān)的細(xì)節(jié)分析
不錯(cuò)的JS中變量相關(guān)的細(xì)節(jié)分析...2007-08-08