溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

es6中then方法怎么用

發(fā)布時(shí)間:2022-05-10 15:27:56 來(lái)源:億速云 閱讀:380 作者:iii 欄目:web開(kāi)發(fā)

這篇文章主要介紹“es6中then方法怎么用”,在日常操作中,相信很多人在es6中then方法怎么用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”es6中then方法怎么用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

在es6中,then的寫(xiě)法是“then(為promise實(shí)例添加狀態(tài)改變成功的回調(diào)函數(shù),失敗的回調(diào)函數(shù))”;該方法用于為promise實(shí)例添加狀態(tài)改變時(shí)的回調(diào)函數(shù),返回的結(jié)果是一個(gè)新的promise實(shí)例,并且該方法可以采用鏈?zhǔn)讲僮鳌?/p>

本教程操作環(huán)境:windows10系統(tǒng)、ECMAScript 6.0版、Dell G3電腦。

es6中then的寫(xiě)法是什么

寫(xiě)法:

then(參數(shù)1,參數(shù)2)

作用:為promise實(shí)例添加狀態(tài)改變時(shí)的回調(diào)函數(shù)

參數(shù)1是成功的回調(diào)函數(shù),

參數(shù)2是失敗的回調(diào)函數(shù)

返回值:then()方法返回的是一個(gè)新的promise實(shí)例,then()方法可以采用鏈?zhǔn)讲僮?

擴(kuò)展知識(shí):

Promise

1.概念:Promise是異步編程的一種解決方案.

2.異步:之前實(shí)現(xiàn)異步操作的方式:①回調(diào)函數(shù)②事件觸發(fā)

3.作用:解決異步操作問(wèn)題,區(qū)別于上述的兩種方法.

4.特點(diǎn):  ①:對(duì)象的狀態(tài)不受外界的影響,promise對(duì)象代表一個(gè)異步操作,有三種狀態(tài):Pending(進(jìn)行中).fulfilled(已成           功).rejected(已失敗).只有異步操作的結(jié)果,可以決定當(dāng)前是哪一種狀態(tài),任何其他操作都無(wú)法改變這個(gè)狀態(tài).

②:對(duì)象的狀態(tài),一旦改變,就不會(huì)再變,任何時(shí)候都可以得到這個(gè)結(jié)果.(Promise對(duì)象的狀態(tài)改變,只有兩種可能:從penging變?yōu)閒ulfilled和pending變?yōu)閞ejected).

5:基本用法

(1)通過(guò)new promise對(duì)象可以創(chuàng)建promise實(shí)例

const promise=new Promise(function(resolve,reject){})

(2)參數(shù)說(shuō)明:promise對(duì)象接收一個(gè)函數(shù)做參數(shù),這個(gè)函數(shù)的參數(shù)分別是resolve和reject它們是兩個(gè)函數(shù),由Javascript引擎提供

(3)resolve函數(shù)的作用:在異步操作成功時(shí)調(diào)用,并將異步操作的結(jié)果,作為參數(shù)傳遞出去.

(4)reject函數(shù)的作用:在異步操作失敗時(shí)調(diào)用,并將異步操作報(bào)出的錯(cuò)誤,作為參數(shù)傳遞出去.

說(shuō)明:promise實(shí)例生成以后可以用then方法分別指定成功和失敗的回調(diào)函數(shù)

.then()是promise實(shí)例的一個(gè)方法,表示要執(zhí)行的下一步操作.

例如:

function ajax(){
            console.log("hello");
            return new Promise(function(resolve,reject){
                    setTimeout(function(){
                        resolve();
                    },1000)
                })
                ajax.then(function(){
                    console.log("world");
                })
            }

6.Promise實(shí)例的方法

(1)then(參數(shù)1,參數(shù)2)

作用:為promise實(shí)例添加狀態(tài)改變時(shí)的回調(diào)函數(shù)

參數(shù)1是成功的回調(diào)函數(shù),參數(shù)2是失敗的回調(diào)函數(shù)

返回值:then()方法返回的是一個(gè)新的promise實(shí)例,then()方法可以采用鏈?zhǔn)讲僮?

(2)catch()

作用:指定發(fā)生錯(cuò)誤時(shí)的回調(diào)函數(shù),作用等同于then方法的第二個(gè)參數(shù)

例如:

let ajax=function(num){
                return new Promise((resolve,reject){
                    if(num>5){
                        resolve(num);
                    }else{
                           throw new Error("出錯(cuò)了");
                        }
                })
            }
               ajax(2).then(function(num){
                console.log(num);
            }).catch(function(error){
                console.log(error);
            })

7.Promise的高級(jí)方法

(1)promise.all()

作用:將多個(gè)promise實(shí)例,包裝成一個(gè)新的promise實(shí)例,簡(jiǎn)單的來(lái)說(shuō)就是多個(gè)異步操作都成功則才執(zhí)行成功的回調(diào),否則執(zhí)行失敗的回調(diào).

參數(shù)說(shuō)明:接收一個(gè)數(shù)組作為參數(shù),數(shù)組的每一項(xiàng)都是promise實(shí)例

(2)promise.race()

作用:將多個(gè)promise實(shí)例,包裝成一個(gè)新的promise實(shí)例,只要有一個(gè)實(shí)例率先改變狀態(tài),promise的狀態(tài)就跟著改變.

參數(shù)說(shuō)明:接收一個(gè)數(shù)組作為參數(shù),數(shù)組的每一項(xiàng)都是promise實(shí)例

8.Promise風(fēng)格的AjAx

                function promiseAjax(json){
                    let url=json.url;
                    let type=json.type||"get";
                    let data=json.data||{};
                    let str="";
                    for(let k in data){
                        str+=k+"="+data[k]+"&";
                    }
                    return new Promise((resolve,reject)=>{
                    let ajax=new XMLHttpRequest();
                    if(type.toLowerCase()==="get"){
                        ajax.open("get",`${url}?${str}time=${Date.now()}`,true);
                        ajax.send();
                    }else if(type.toLowerCase()==="post"){
                        ajax.open("post",url,true);
                        ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
                        ajax.send(str.substring(0,str.laseIndexOf("&")));
                    }
                        ajax.onreadystatechange=function(){
                            if(ajax.readyState===4){
                                if(ajax.status>=200&&ajax.status<300){
                                    resolve(JSON.parse(ajax.responseText));
                                }else{
                                    let error=new Error();
                                    error.status=ajax.status;
                                    reject(error);
                                }
                            }
                        }
                    })
            }

到此,關(guān)于“es6中then方法怎么用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI