gpt4 book ai didi

javascript - React Flux 实现调度链

转载 作者:可可西里 更新时间:2023-11-01 02:26:06 25 4
gpt4 key购买 nike

我正在尝试将 React 与 Flux 架构一起使用,但偶然发现了一个我无法处理的限制。问题如下:

  1. 有一个监听事件的商店。事件具有对象 ID。如果需要,我们需要获取对象并将其选中。
  2. 如果商店没有具有此 ID 的对象 - 将对其进行查询。在回调中,我们将另一个事件发送到负责选择的存储。
  3. 如果商店有对象 - 我想分派(dispatch)选择事件,但我不能,因为分派(dispatch)正在进行中。

目前我想到的最佳解决方案是将内部调度包装在 setTimeout(f, 0) 中,但它看起来很可怕。

实际上这个问题很普遍——如果每个新的调度都是基于以前的调度处理结果,我应该如何在没有调度嵌套的情况下组织调度链(不违反当前的 Flux 限制)。

有没有人有解决此类问题的好方法?

var selectItem(item) {
AppDispatcher.dispatch({
actionType: AppConstants.ITEM_SELECT,
item: item
});
}

// Item must be requested and selected.
// If it's in store - select it.
// Otherwise fetch and then select it.
SomeStore.dispatchToken = AppDispatcher.register((action) => {
switch(action.actionType) {
case AppConstants.ITEM_REQUESTED:
var item = SomeStore.getItem(action.itemId);
if (item) {
// Won't work because can't dispatch in the middle of dispatch
selectItem(item);
} else {
// Will work
$.getJSON(`some/${action.itemId}`, (item) => selectItem(item));
}
}
};

最佳答案

您正在编写自己的调度程序吗? setTimeout(f, 0) 是一个很好的技巧。我在我的最小通量中做同样的事情 here .那里没什么可怕的。 Javascript 的 concurrency model很简单。

更强大的通量分配器实现应该会为您处理这个问题。

关于javascript - React Flux 实现调度链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com