我的代码如下所示:
(defn on-message [event]
(do-stuff))
(defn build-websocket []
(let [ws (js.window.WebSocket. "ws://localhost:8888/ws/")]
(set! (.-onopen ws) on-open)
(set! (.-onclose ws) on-close)
(set! (.-onerror ws) on-error)
(set! (.-onmessage ws) on-message)
ws))
我正在使用figwheel
. 我注意到,当我更改回调(on-message
、、on-error
等)时,应用程序会重新加载,但这些函数的旧版本仍然会被调用。
(defn on-message [event]
; Changed. Requires hard reload to be called on websocket message.
(do-other-stuff))
我理解这是因为旧版本的函数仍然被 websocket 引用。
是否有一种模式可以使此代码可重新加载?也许我应该使用core/async
?如果是这样,那会是什么样子?