如何在FLUX中处理ajax响应

时间:2016-10-27 14:18:25

标签: javascript jquery ajax reactjs flux

我是FLUX的新手,我有问题如何处理FLUX中的ajax。

我的情况如下:

我有文件 commentAPI.js

//all js files are compiled from coffescript

// fetching all comments from server
    _fetchComments: function() {
       var promise;
       promise = $.ajax({
         url: "comments/show",
         type: "GET",
         dataType: "json"
        });
        return promise.then(function(response) {
         // here should be any action ?
        }, function(error) {
         return console.log(error);
        });   }

然后我有 commentActions.js

   fetchComments: function () {
    allcomments=commentAPI._fetchComments(); 
    return Dispatcher.dispatch({
      actionType: ActionTypes.ALL_COMMENTS,
      comments: allcomments
    });
  }

此代码实际上无效,因为在 commentActions.js 中调用的函数 _fetchComments 会返回整个承诺。

我想做什么:我想从ajax回调函数得到响应并将结果传递给我的有效负载对象,然后在的_fetchComments()函数中由Dispatcher调度它commentActions.js

最好的方法是怎样的?如何获得对ajax回调函数响应的访问权限?

1 个答案:

答案 0 :(得分:0)

您应该发送 _fetchComments 功能,当该承诺解决后,请调用 fetchComments 操作。

在反应代码中,你应该调用异步函数(即 _fetchComments )。

在你的例子中:

// fetching all comments from server
    _fetchComments: function() {
       var promise;
       promise = $.ajax({
         url: "comments/show",
         type: "GET",
         dataType: "json"
        });
        return promise.then(function(response) {
         // put the sync action here
         fetchComments(response)
        }, function(error) {
         return console.log(error);
        });   }

不要忘记将其从行动中删除(即 fetchComments