通过全局变量对互斥进行反应



我们正在使用ReactRedux
如何在互斥的帮助下保护资源不被访问?

可以通过全局变量来实现这一点吗?将它们存储在哪里
PS我们不想通过Redux这样做,因为状态更新延迟

提供更多上下文的小示例

export default function configureStore() {
const store = createStore(rootReducer, persistedState, composedEnhancers);
store.subscribe(
// saveState saves state to localStorage
// here we need mutex which will prevent state from saving to localStorage
// and some way to toggle this mutex
throttle(() => {
saveState(store.getState());
}, 2000),
);
return store;
}

我不确定这是否是正确的解决方案
请记住,这是有效的,因为store.subscribe会侦听redux状态更改

export default function configureStore() {
const store = createStore(rootReducer, persistedState, composedEnhancers);
store.subscribe(
throttle(() => {
const currentState = store.getState();
// if we allowing state to sync with localStorage
if (currentState.isMutexVariable) {
saveState(currentState);
}
}, 2000),
);
return store;
}

我可能没有完全理解你。您是否试图让程序等待一行代码完成执行,然后再转到下一行?这样,多个"事物"就不会同时访问同一资源。您可以使用async/await函数来完成此操作。例如:

async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("done!"), 1000)
});
let result = await promise; // wait till the promise resolves (*)
alert(result); // "done!"
}
f();

最新更新