连续两次分派编辑同一状态是否安全

问题描述 投票:0回答:1

我正在使用redux-thunk。我需要将状态设为空,然后将其填充数据。由于某种原因,我为此有两个单独的动作,emptyName,addName。

所以我在做的只是将它们连续分派,例如:

dispatch(emptyName());
dispatch(addName("London"));

但是我想等第一个完成,然后再发送另一个,以确保如果第一个由于某种原因被弄乱了,我们不会分派第二个动作。

该怎么做?我相信派遣不是一个承诺,所以我不能只做:

await dispatch(emptyName());
dispatch(addName("London"));

请不要说没有必要针对这种情况。因为在其他更关键的情况下,我可能想稍后再做,所以我可能真的需要等待第一次成功完成

P.S。如果无法使用thunk,那么我也可以使用saga解决方案:)

reactjs redux redux-saga redux-thunk
1个回答
0
投票

如果您正在使用redux-thunk,则可以从操作中返回一个Promise并使用.then(或等待)

emptyName().then(() => {
  addName("London");
});

我已经在操作中使用setTimeout创建了一个人为的示例来代替数据获取,但是原理是相同的。

https://codesandbox.io/s/redux-thunk-9gbnj

© www.soinside.com 2019 - 2024. All rights reserved.