为了账号安全,请及时绑定邮箱和手机立即绑定

调度后调用函数?(还原)

调度后调用函数?(还原)

德玛西亚99 2021-08-26 14:34:19
我正在使用 Firebase 开发 React 应用程序。我想在dispatch完成后调用第一个函数。每个用户都分配了一个currentcity,但我不希望currentcity被删除,因为这会破坏应用程序。所以我想要做的是在调用 deleteCity 函数之后运行 changeCurrentCity 函数,这样就不会发生这种情况。我只是想将 currentcity 分配给列表中的第一个。changeCurrentCity()不从内运行.then()的deleteCity。我试过 console.log-ing 它,它只显示功能本身。我确定这只是一个简单的修复,但我不知道我在做什么。const changeCurrentCity = (city) => {    return (dispatch, getState, { getFirebase, getFirestore }) => {        const firestore = getFirestore();        const userId = getState().firebase.auth.uid;        firestore.collection('users').doc(userId).update({            currentcity: city        }).then(() => {            dispatch({ type: 'UPDATE_CITY', city });        }).catch((err) => {            dispatch({ type: 'UPDATE_CITY_ERROR', err});        })    }};const deleteCity = (city) => {    return (dispatch, getState, { getFirebase, getFirestore }) => {        const firestore = getFirestore();        firestore.collection('cities').doc(city.id).delete().then(() => {            dispatch({ type: 'DELETE_CITY', city });        }).then(() => {            changeCurrentCity(getState().firestore.data.cities[Object.keys(getState().firestore.data.cities)[0]].userid);        }).catch((err) => {            dispatch({ type: 'DELETE_CITY_ERROR', err});        })    }};export {changeCurrentCity, deleteCity}问题出在deleteCity. changeCurrentCity删除城市后未运行。
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

分派动作是异步的,这就是为什么可能在分派后立即调用 changeCity 而不更新商店的原因。您可以使用 asnyc 等待调度并在此之后解决承诺。这将延迟 changeCity 直到删除完成。


查看完整回答
反对 回复 2021-08-26
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信