mirror of
https://github.com/leporello-js/leporello-js
synced 2026-01-13 21:14:28 -08:00
guard againt simultaneous execution
This commit is contained in:
@@ -216,11 +216,15 @@ const external_imports_loaded = (
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return eval_modules_finished(state, result, node, toplevel)
|
||||
return eval_modules_finished(state, state, result, node, toplevel)
|
||||
}
|
||||
}
|
||||
|
||||
const eval_modules_finished = (state, result, node, toplevel) => {
|
||||
const eval_modules_finished = (state, prev_state, result, node, toplevel) => {
|
||||
if(state.calltree_changed_token != prev_state.calltree_changed_token) {
|
||||
// code was modified after prev vesion of code was executed, discard
|
||||
return state
|
||||
}
|
||||
const next = apply_eval_result(state, result)
|
||||
|
||||
let active_calltree_node
|
||||
|
||||
7
src/effects.js
vendored
7
src/effects.js
vendored
@@ -182,7 +182,12 @@ export const render_common_side_effects = async (prev, next, command, ui) => {
|
||||
) {
|
||||
const s = next.eval_modules_state
|
||||
s.promise.then(result => {
|
||||
exec('eval_modules_finished', result, s.node, s.toplevel)
|
||||
exec('eval_modules_finished',
|
||||
next, /* becomes prev_state */
|
||||
result,
|
||||
s.node,
|
||||
s.toplevel
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user