Redux Promise中间件如何反应将结果操作发送到调度?

Stackjlei

我正在尝试通过react redux文档了解中间件的承诺,但不理解then以下内容:

const vanillaPromise = store => next => action => {
  if (typeof action.then !== 'function') {
    return next(action)
  }

  return Promise.resolve(action).then(store.dispatch)
}

怎么then知道要调度什么?动作未作为参数传递

return Promise.resolve(action).then(function (action) {store.dispatch(action})

所以我不明白调度如何接收动作。

詹姆斯·埃玛农

希望我能为您提供解释。

让我们看看您所熟悉的:

return Promise.resolve(action)
    .then(function (action) { store.dispatch(action)} )

您会看到以下部分:

function (action) { store.dispatch(action)} 

那只是一个等待传递“ action”属性的函数。

现在,当我们查看您遇到的困扰您的问题时,是这样的:

return Promise.resolve(action)
  .then(store.dispatch) // <--- this part

“调度”只是一个函数,在这种情况下,它期望一个参数。最有可能的是,一个对象-像这样:

store.dispatch({ type: 'MY_ACTION_TYPE' })}

现在,您可以像这样将其“包装”在一个封闭容器中,并且看起来很熟悉:

.then( (action) => {
   store.dispatch(action)
})

但是,我们真的需要将其“包装”到一个匿名函数中吗?并不是真的,所以我们可以放:store.dispatch,它是函数“ waiting”(等待),从promise的返回中传递参数。这样想:

 var MultiplyByTwo = (x) => x * 2

 Promise.resolve(5).then(MultiplyByTwo) 
// see here, this function is gonna be called with the resolution with the 5

当我们检查函数“ MultipleByTwo”时,它具有您熟悉的熟悉的签名:(x)=> x * 2

如果仅删除函数名称,则其相同:

Promise.resolve(5).then((x) => x * 2)

注意:您会看到resolve(5)->将该resolve.then视为一条链或“移交”。当我们“ resolve(5)”时,我们将值“ 5”向前传递给“ .then”。现在记住,这5个值可以是任何...原始类型,在这种情况下为5个,是一个对象{TYPE:“ WHATEVER”},一个函数等。它只是传递给您。例如,“嘿'.then',这是我的价值。

resolve(5).then(myfunction)
        |                ^
        |__>__>__>__>__>_|

重要的是要了解“ myFunction”是上面的示例,或者在我们的multipliByTwo甚至在store.dispatch示例中。它们都期望传递参数。

multiplyByTwo(x) <-- expecting one argument

否则您的函数可能不会在函数签名中声明它,但是它将在主体内部,例如。

myFunction() {
   const args = Array.from(arguments) // we grab the arguments
}

或希望有任意数量的参数

myOtherFunction(...args)

但是,是的,这些功能都需要解决方案的一些输入才能起作用。在某些情况下,您可能并不关心返回的值,如果有的话,您只想拥有一些流控制...就这样做吧。

我希望这会有所帮助,并希望我实际上回答了您的问题。如果没有,请告诉我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Redux Thunk与Redux定制中间件

来自分类Dev

Redux中间件逻辑

来自分类Dev

Redux中间件currying

来自分类Dev

Redux中间件逻辑

来自分类Dev

Redux中间件,笨拙?

来自分类Dev

redux-promise错误:操作必须是普通对象。使用自定义中间件

来自分类Dev

Redux 中间件不分派新操作

来自分类Dev

Redux中间件如何实现多任务处理?

来自分类Dev

如何应用 async react redux 中间件

来自分类Dev

发送2个参数来响应Redux中间件,而不是仅执行一项操作

来自分类Dev

Redux的applyMiddleware无法呈现中间件

来自分类Dev

Redux中间件在reducer之后被调用

来自分类Dev

在 redux 中间件中调用 dispatch

来自分类Dev

Redux 中间件无限循环?

来自分类Dev

Redux中间件问题-错误:操作必须是纯对象。使用自定义中间件进行异步操作

来自分类Dev

Redux:使用异步中间件与成功功能上的调度动作

来自分类Dev

如果没有Redux Thunk中间件,我可以调度多个动作吗?

来自分类Dev

在redux中间件中多次调度是否有效?

来自分类Dev

当承诺在Redux中间件内部解析时,为什么不能调度动作?

来自分类Dev

redux的#applyMiddleware如何反应,通过返回#createStore而不是商店来确保仅将中间件应用一次?

来自分类Dev

如何在 angular-redux 中使用 redux-state-sync 中间件?

来自分类Dev

无法处理错误:redux-promise-middleware 中的“中间件不是函数”?

来自分类Dev

Redux错误:动作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

在Redux中路由时如何将Redux存储发送到客户端

来自分类Dev

反应 redux 异步操作

来自分类Dev

如何获得调度Redux

来自分类Dev

将构造参数传递给Redux中间件

来自分类Dev

React确认模式和Redux中间件

来自分类Dev

使用Jest测试Redux和Axios提取中间件

Related 相关文章

  1. 1

    Redux Thunk与Redux定制中间件

  2. 2

    Redux中间件逻辑

  3. 3

    Redux中间件currying

  4. 4

    Redux中间件逻辑

  5. 5

    Redux中间件,笨拙?

  6. 6

    redux-promise错误:操作必须是普通对象。使用自定义中间件

  7. 7

    Redux 中间件不分派新操作

  8. 8

    Redux中间件如何实现多任务处理?

  9. 9

    如何应用 async react redux 中间件

  10. 10

    发送2个参数来响应Redux中间件,而不是仅执行一项操作

  11. 11

    Redux的applyMiddleware无法呈现中间件

  12. 12

    Redux中间件在reducer之后被调用

  13. 13

    在 redux 中间件中调用 dispatch

  14. 14

    Redux 中间件无限循环?

  15. 15

    Redux中间件问题-错误:操作必须是纯对象。使用自定义中间件进行异步操作

  16. 16

    Redux:使用异步中间件与成功功能上的调度动作

  17. 17

    如果没有Redux Thunk中间件,我可以调度多个动作吗?

  18. 18

    在redux中间件中多次调度是否有效?

  19. 19

    当承诺在Redux中间件内部解析时,为什么不能调度动作?

  20. 20

    redux的#applyMiddleware如何反应,通过返回#createStore而不是商店来确保仅将中间件应用一次?

  21. 21

    如何在 angular-redux 中使用 redux-state-sync 中间件?

  22. 22

    无法处理错误:redux-promise-middleware 中的“中间件不是函数”?

  23. 23

    Redux错误:动作必须是普通对象。使用自定义中间件进行异步操作

  24. 24

    在Redux中路由时如何将Redux存储发送到客户端

  25. 25

    反应 redux 异步操作

  26. 26

    如何获得调度Redux

  27. 27

    将构造参数传递给Redux中间件

  28. 28

    React确认模式和Redux中间件

  29. 29

    使用Jest测试Redux和Axios提取中间件

热门标签

归档