我们正在使用React
和Redux
如何在互斥的帮助下保护资源不被访问?
可以通过全局变量来实现这一点吗?将它们存储在哪里
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();