diff --git a/src/containers/blocks.jsx b/src/containers/blocks.jsx index c366da458..694c50cbd 100644 --- a/src/containers/blocks.jsx +++ b/src/containers/blocks.jsx @@ -180,13 +180,19 @@ class Blocks extends React.Component { componentWillUnmount () { this.detachVM(); this.workspace.dispose(); - clearTimeout(this.toolboxUpdateTimeout); + if (this.toolboxUpdateTimeout) this.toolboxUpdateTimeout.cancel(); } requestToolboxUpdate () { - clearTimeout(this.toolboxUpdateTimeout); - this.toolboxUpdateTimeout = setTimeout(() => { - this.updateToolbox(); - }, 0); + if (this.toolboxUpdateTimeout) this.toolboxUpdateTimeout.cancel(); + let running = true; + this.toolboxUpdateTimeout = Promise.resolve().then(() => { + if (running) { + this.updateToolbox(); + } + }); + this.toolboxUpdateTimeout.cancel = () => { + running = false; + }; } setLocale () { this.ScratchBlocks.ScratchMsgs.setLocale(this.props.locale);