【发布时间】:2016-01-12 20:42:25
【问题描述】:
我正在学习 flux 架构。我正在尝试添加新用户。当用户点击 UI 上的save 按钮时,在我的控制器中我调用动作创建者的createUser 函数来发起异步请求:
addNewUser: function () {
HdfsUsersActions.createUser($scope.newUser);
}
动作创建函数:
createUser: function (user) {
return restService.createHdfsUser(user).then(function (data) {
flux.dispatch('platform-manager-ADD_USER', data);
});
}
然后我需要知道异步请求何时结束及其状态以在 html 中隐藏用户添加 UI 表单。这里的正确方法是什么?
我可以这样做:
HdfsUsersActions.createUser($scope.newUser).then(function() {
//hide user add form on UI
});
但这似乎不是正确的方法,因为在flux 架构下,控制器获取数据的唯一方式似乎是来自store。在这里,使用then 似乎打破了该规则,因为数据来自action creator
【问题讨论】:
-
因为问题不是关于任何特定框架,而是关于通量的架构范式
-
“但这似乎不是正确的方法。”...如果您调用一个返回承诺的函数,那么在
async/await登陆之前这确实是正确的方法。是什么让您认为这是不正确的? -
@spender,因为在
flux架构下,控制器获取数据的唯一方式似乎是来自store。在这里,使用then似乎打破了该规则,因为数据来自action creator -
请更新主要问题(如何在异步事件完成时从控制器知道),因为我非常怀疑这是您想知道的。你更有可能想知道。在 javascript angularjs 中,你怎么知道一个任务已经完成。这与异步与非异步无关。它与如何处理来自 angularjs 的响应以及它们何时完成有关。
-
@Maximus 对不起,我真的!!!不是!试图成为一个 $ss,但它仍然是一个小姐领先的标题。 “Flux 架构 - 如何从控制器知道动作的异步事件何时完成”应该类似于“Flux 架构 - 如何知道请求何时完成/完成”。也可能是“Angularjs - 如何知道请求何时完成/完成”。但我需要谷歌通量以确保因此我不会自己更改标题。但我知道当前的术语并不能准确地代表您想知道的内容。
标签: javascript reactjs reactjs-flux flux