首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接还原-操作和还原-承诺-中间件

链接还原-操作和还原-承诺-中间件
EN

Stack Overflow用户
提问于 2016-12-28 17:33:37
回答 2查看 2.4K关注 0票数 7

我使用redux-行动redux-承诺-中间件来分派操作,以及用于async await支持的TypeScript 2.1

这是一个同时使用redux-actionsredux-promise-middleware的操作

代码语言:javascript
复制
// create an async action
const fooAction = createAction('FOO', async () => {
  const { response } = await asyncFoo();
  return response;
});

// use async action
fooAction('123')

这是一个操作链接的例子,只使用redux-promise-middleware

代码语言:javascript
复制
const foo = () => dispatch => {
  return dispatch({
    type: 'TYPE',
    payload: new Promise()
  })
  .then(() => dispatch(bar()));
}

如何将redux-promise-middleware中的链接与redux-actions一起使用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-10 08:40:43

您必须记住,即使async await看起来是同步的,它也会在幕后使用承诺,而且不管您是否使用awaitasync函数总是会返回承诺。

由于createAction的第二个参数是有效负载创建者,所以没有什么可以阻止您使用结果对象。

下面是一个基于初始代码的示例:

代码语言:javascript
复制
const fakeCall = () => new Promise(resolve => {
  setTimeout(() => resolve({ response: 'ok' }), 1E3)
})

const fooAction = createAction('FOO', async () => {
  const { response } = await fakeCall()
  return response
})

const foo = () => dispatch =>
  dispatch(fooAction())
    .then(() => dispatch(bar()))

// or

const foo = () => async dispatch => {
  await dispatch(fooAction())
  dispatch(bar())
}
票数 5
EN

Stack Overflow用户

发布于 2017-06-24 17:57:17

艾普苏回答的问题是,“等待”是你阻塞了事件循环,你必须直接处理承诺。

还有一种替代“redux-允诺-中间件”的方法,即剩馀汽车具有与redux承诺中间件相同的API,但也提供了一种链接减少器调用的机制。

您的例子应该类似于:

代码语言:javascript
复制
// UI code
actions.data.foo()

// store/data/foo.js
export function fulfillment(data,payload){
   return data
} fulfillment.chain = actions.x.bar

export function action(payload){
    return Promise.resolve()
}

真的,就是这样。您只需要将操作分配给一个链式属性,redux -auto将在redux生命周期的正确点调用它。

了解上述来源。redux-自动创建操作并根据文件结构将它们连接到减缩。其中文件夹名成为状态上的属性的名称。文件夹中的文件是要在状态的该部分上执行的操作。

这是文档把行动联系在一起

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41366987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档