我正在尝试在ClojureScript中(带有Reagent)创建一个睡眠函数:
(ns cljweb.webpage
(:require [reagent.core :as reagent]))
(def temp-atom (reagent/atom 0))
(defn sleep [msec]
(js/setTimeout (fn []) msec))
(defn page []
[:div
[:p @temp-atom]
[:button
{:on-click
(fn []
(sleep 3000)
(swap! temp-atom inc))}
"Click me!"]])
出于某种原因,这个函数不能正确休眠——当我点击“点我!”按钮时,temp-atom
立即增加——当我在 page
中添加时间后,得到以下结果:
[:p (time (sleep 3000))]
我在控制台中看到以下内容:
"Elapsed time: 0.015000 msecs"
在代码中我哪里做错了?
setTimeout
的情况下实现sleep
?这是我的主要目标。虽然我可能需要发布一个新问题,但我相当确定这使我的问题成为了XY问题。 - Qwerp-DerpsetTimeout
有什么问题?请查看https://dev59.com/jnNA5IYBdhLWcg3wdtpd#39914235。 - Piotrek Bzdyl