在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 如何合理的返回一個promise對象?

如何合理的返回一個promise對象?

對promise不是很熟悉,導致有時候希望想分裝一個方法,讓其返回一個promise對象(調(diào)用方可以通過.then的方式調(diào)用),感覺怎么寫都不太對勁,特來請教,謝謝!

例如如下代碼,我想把xxxApiapi調(diào)用邏輯和todo()業(yè)務(wù)邏輯分開,

    let datas = {
      param1: '',
      param2: '',
      param3: '',
    };
 
    this.$store.dispatch('xxxApi', datas).then((res) => {
        //todo()
    }).catch(err => {
        
    })

改成如下方式——除todo外,其他邏輯分裝到isProvid()方法里面——該方法返回 promise

isProvid().then(res => { //todo })

改怎么實現(xiàn)呢?直接如下就可以了么?

function isPrvid(){
    let datas = {
      param1: '',
      param2: '',
      param3: '',
    };
    return this.$store.dispatch('xxxApi', datas)
}
回答
編輯回答
浪蕩不羈

可以啊,你不是寫了嗎 自己測試一下可以

2018年3月9日 08:37
編輯回答
愛是癌

我測試了一下,這樣是可以的,但是如果不讓直接return this.$store.dispatch('xxxApi', datas),而要自己根據(jù)返回的內(nèi)容來 構(gòu)建一個 promise改如何寫呢?

是不是應該這么寫呢?

//調(diào)用dispatch后,不管是正確還是錯誤,都返回一個自定義的`promise`對象,而不是返回調(diào)用dispatch默認的promise對象(根據(jù)自身業(yè)務(wù)進行包裝了一下),這么理解正確么?
this.$store.dispatch('xxxApi', datas).then(res => {
    if(res.isShow){ //業(yè)務(wù)上判斷正確
        return new Promise(function(resolve, reject){
            resolve(res) //第三方調(diào)用,then里面可以獲取到 res 信息,對不?
        })
    }else{
        return Promise.reject(err) //返回自定義(業(yè)務(wù))錯誤信息
    }
}).catch(err +> {
    return Promise.reject(err) //返回未知錯誤信息
})
2018年8月13日 09:36
編輯回答
神經(jīng)質(zhì)

首先,是的。

其次,這段代碼最好改成,這樣更符合 Promise 的標準用法:

function isPrvid() {
  return this.$store.dispatch('api', data)
    .then(res => {
      if (res.isShow) {
        return res;
      }
      throw new Error(err);
    });
}    

至于 Promise 的用法,我還做過一次講堂,應該算說的很詳細了:Promise 的 N 種用法。

2018年6月30日 07:08