商店中的 Flux ajax api 调用返回父函数

Posted

技术标签:

【中文标题】商店中的 Flux ajax api 调用返回父函数【英文标题】:Flux ajax api calls in stores return to parent function 【发布时间】:2016-04-22 23:15:16 【问题描述】:

我正在使用以下方法调用我的 api:

    getBall: function()
    ball = xhttp(
        url: '/current',
        method: 'get'
    ).then(function(data)
        return data;
    )

    return ball;

问题是我无法在父函数中访问data。我尝试分配变量ball(一个promise对象),但它永远不会让我访问data

我想将data 的值返回给父函数(getBall)。最干净的方法是什么?

【问题讨论】:

这是一个承诺。为什么getBall().then( data => /* ... */ ) 不起作用? 【参考方案1】:

getBall 函数很可能在 xhttp 请求完成之前退出。所以没有办法将data 传回getBall。您能做的最好的事情就是将额外的.then 子句附加到ball,或者将ball 作为承诺传递给getBall 的调用者。调用者可以附加自己的.then 子句。

另一种方法是使用 generators,但它和所有其他异步方法(例如 Promises(甚至简单的回调))都需要超越传统的命令式模型。

【讨论】:

你是绝对正确的。它确实在xhttp 完成之前退出getBall。此函数的目标是简单地从 ajax 调用返回数据。话虽如此,实现这一目标的最简单方法是什么……取消承诺?

以上是关于商店中的 Flux ajax api 调用返回父函数的主要内容,如果未能解决你的问题,请参考以下文章

Flux 中的 AJAX:依赖状态更改时刷新存储

Flux 与多个 ajax 请求

Flux:从 AJAX 向组件返回值

React / Flux:我应该让商店听取其他商店的更改吗?

如何重用多个商店使用的对象?

在 Flux 中处理 ajax 请求的最佳方式?