vue中Promise的用法

promise是什么?
1、主要用于異步計(jì)算
2、可以將異步操作隊(duì)列化,按照期望的順序執(zhí)行,返回符合預(yù)期的結(jié)果
3、可以在對(duì)象之間傳遞和操作promise,幫助我們處理隊(duì)列

為什么會(huì)有promise?
為了避免界面凍結(jié)(任務(wù))

同步:假設(shè)你去了一家飯店,找個(gè)位置,叫來(lái)服務(wù)員,這個(gè)時(shí)候服務(wù)員對(duì)你說(shuō),對(duì)不起我是“同步”服務(wù)員,我要服務(wù)完這張桌子才能招呼你。那桌客人明明已經(jīng)吃上了,你只是想要個(gè)菜單,這么小的動(dòng)作,服務(wù)員卻要你等到別人的一個(gè)大動(dòng)作完成之后,才能再來(lái)招呼你,這個(gè)便是同步的問(wèn)題:也就是“順序交付的工作1234,必須按照1234的順序完成”。
異步:則是將耗時(shí)很長(zhǎng)的A交付的工作交給系統(tǒng)之后,就去繼續(xù)做B交付的工作,。等到系統(tǒng)完成了前面的工作之后,再通過(guò)回調(diào)或者事件,繼續(xù)做A剩下的工作。
AB工作的完成順序,和交付他們的時(shí)間順序無(wú)關(guān),所以叫“異步”。

1.promise簡(jiǎn)單用法

function2(){
    // 你的邏輯代碼 
    return Promise.resolve(/* 這里是需要返回的數(shù)據(jù)*/)
}

function3(){
    // 你的邏輯代碼 
    return Promise.resolve(/* 這里是需要返回的數(shù)據(jù)*/)
}

// 調(diào)用
function1(){
    this.function2().then(val => { 
        this.function3();
    });
}

2.promise高階用法

init1(){
return new Promise((resolve, reject) => {
    let data={
        dateStr:this.time
    };
    api.get('url', null).then( res => {
       //自己的操作
        resolve()
    }).catch(err => {
        reject()
    });
});
};
init2(){
return new Promise((resolve, reject) => {
    let data={
        dateStr:this.time
    };
    api.get('url', null).then( res => {
       //自己的操作
        resolve()
    }).catch(err => {
        reject()
    });
});
};


//調(diào)用
Promise.all([this.init1(),this.init2()]).then(() => {
    //兩個(gè)都調(diào)成功以后執(zhí)行的操作
//主要是loading問(wèn)題
}).catch(err => {
    // 拋出錯(cuò)誤信息
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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