鍍金池/ 問(wèn)答/HTML/ dva能不能先執(zhí)行effect再執(zhí)行subscription?

dva能不能先執(zhí)行effect再執(zhí)行subscription?

我的subscription里有l(wèi)ocalStorage.getItem('stompUserId');
effect里有

const { data: user } = yield call(query, payload)
        const id = user.userId
        localStorage.setItem('stompUserId', id);

每次打開(kāi)頁(yè)面先get了老的stompUserId,
想了好多補(bǔ)救措施,但是繞不開(kāi)這個(gè)先subscription 后effect 導(dǎo)致先get再set的問(wèn)題。

在effect里執(zhí)行yield call才能得到我要的id,但此時(shí)已經(jīng)過(guò)了subscription了。

回答
編輯回答
壞脾滊

這個(gè)問(wèn)題可以這樣解決。保證dva2.0版本以上。
subscripitons中:

dispatch({type: yourEffects}).then(() => {
    localStorage.getItem('....');
})

這樣就可以實(shí)現(xiàn)執(zhí)行完effects后再執(zhí)行的需求了

2017年9月1日 10:54