我是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回调函数响应的访问权限?
答案 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 )