ES6 同步和異步、Promise

一.同步與異步

1. Promise作用:解決異步回調(diào)的問題

二.Promise對象

目的:創(chuàng)建異步對象,當(dāng)異步對象中的異步操作執(zhí)行完之后,再執(zhí)行想要執(zhí)行的東西。

1. resolve 表示將狀態(tài)變成成功完成,reject 表示將狀態(tài)變成失敗完成。

2. 當(dāng)resolve方法執(zhí)行完成之后,再執(zhí)行then方法。

let p = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        console.log('執(zhí)行完畢!');
        resolve();
        //表示完成
    },3000)
});
p.then(()=>{
    console.log('promise異步操作完成了');
});

三.Promise傳參

  • resolve里的參數(shù)可以傳給then
let p = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        //console.log('脫完衣服');
        resolve(3);
    },3000)
});
p.then((d)=>{
    console.log('去洗'+d+'件衣服');
});
-->打印去洗3件衣服

四.Promise錯誤處理

1. reject中存儲錯誤處理的參數(shù),可以傳給then方法中的第二個參數(shù)

let p = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        //resolve('讀寫成功');
        reject('讀寫失敗');
    },2000)
});
p.then((d)=>{
    console.log('執(zhí)行成功');
},(err)=>{
    console.log(err);
});
-->讀寫失敗

五.Promise.all()-->一個腳本中有多個promise時,監(jiān)控多個Promise對象執(zhí)行完成

1.Promise.all([p1,p2,p3]):把promise打包,扔到一個數(shù)組里面,打包完還是一個promise對象.

let p1 = new Promise((resolve,reject)=>{
    let time = Math.random()*4000+1000;
    setTimeout(()=>{
        console.log('p1完成');
        resolve();
    },time)
});
let p2 = new Promise((resolve,reject)=>{
    let time = Math.random()*4000+1000;
    setTimeout(()=>{
        console.log('p2完成');
        resolve();
    },time)
});
let p = Promise.all([p1,p2)];
p.then(()=>{
    console.log(全部執(zhí)行完畢);
})
-->p1和p2全部執(zhí)行完畢后,才會執(zhí)行p.then方法里的操作

必須確保所有promise對象都是resolve狀態(tài)

輸出["aaaa","bbbb","cccc"]

六.

1.Promise對象的then方法有兩個參數(shù),一個是成功后的參數(shù),另一個是失敗的參數(shù)方法

  • promise.then(success,fail)
失敗鳥

2.new Promise().catch()-->錯誤捕獲

等同于上面的reject,返回“失敗鳥”

也可這樣使用

七.Promise的方法

1.Promise.resolve('xxx'):將現(xiàn)有的東西,轉(zhuǎn)成一個Promise對象,且是resolve成功狀態(tài)

輸出aaa

等價于下面這句話


2.Promise.reject('xxx'):將現(xiàn)有的東西,轉(zhuǎn)成一個Promise對象,且是reject失敗狀態(tài)

輸出aaaa

4.Promise.race():與all的不同之處在于,只要有一個是resolve狀態(tài)就可以返回

輸出aaaa

八.


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容