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

鍍金池/ 問答/HTML/ Promise在then中有條件判斷,并返回不同的Promise對象,如何在下一

Promise在then中有條件判斷,并返回不同的Promise對象,如何在下一個then中判斷來自于哪個條件?

let p1 = ()=>{
    data = xxxx  // xxx 是從數(shù)據(jù)庫獲取的一個值  true 或 false
    return new Promise((res,rej)=>{
        res(data)
    })
}

// p2 p3 都是promise
let p2 = ....

let p3 = ....

// 執(zhí)行
p1()
.then(
    (data)=>{
        if (data) {
            return p2
        } else {
            return p3
        }
    }
)
.then(
    // 如何去判斷是 p2 的resolve,還是 p3 的 resolve
)
回答
編輯回答
朕略傻

不能在 p2,p3中立個flag標(biāo)志一下么?

2017年1月16日 07:13
編輯回答
若相惜

要判斷是p2的resolve,還是p3的resolve,歸根結(jié)底是判斷data的值是true還是false,由于Promise鏈?zhǔn)秸{(diào)用值傳遞的限制,在p1()的第二個then函數(shù)內(nèi)部是拿不到data值的,有兩個方式可以做簡單的判斷:

  1. 改造p2,p3函數(shù),多帶一個data參數(shù),在第二個then函數(shù)里面就可以根據(jù)data來判斷
  2. 在p1()執(zhí)行外部環(huán)境初始化一個變量
let my_data;

然后在第一個then函數(shù)里面

my_data = data;

就可以直接在第二個then函數(shù)里面通過my_data來進行判斷了。

其實最好的方法是直接用async/await方式來改寫這個異步代碼,這樣就不用這些low b的方式來傳一個data值了~

2017年10月22日 06:47