什么时候会出现副作用?
When do side effects happen?
我正在构建一个阻止 HTTP 调用的应用程序。我想在阻塞之前打印一些东西,然后在阻塞调用完成后继续打印一些东西。我的第一个想法是这样做
(print "Processing " item-hash "...")
(query-item item-hash)
(Thread/sleep 10000)
(println "Done")))
睡眠只是为了进一步减慢它的速度,以 100% 确定它按照预期的方式工作。
以我的理解,它应该打印消息,开始query-item
,然后休眠10秒,然后打印Done
。但目前它会等到整个父 sexpr 完成并在之后打印(当所有阻塞调用完成时打印整行。
整个主要供参考
(defn -main [& echo]
(map
(fn [url]
(let [item-hash (market-listing-url-to-hash-name url)]
(print "Processing " item-hash "...")
(query-item item-hash)
(Thread/sleep 10000)
(println "Done")))
(collect-urls 1)))
谢谢
我正在构建一个阻止 HTTP 调用的应用程序。我想在阻塞之前打印一些东西,然后在阻塞调用完成后继续打印一些东西。我的第一个想法是这样做
(print "Processing " item-hash "...")
(query-item item-hash)
(Thread/sleep 10000)
(println "Done")))
睡眠只是为了进一步减慢它的速度,以 100% 确定它按照预期的方式工作。
以我的理解,它应该打印消息,开始query-item
,然后休眠10秒,然后打印Done
。但目前它会等到整个父 sexpr 完成并在之后打印(当所有阻塞调用完成时打印整行。
整个主要供参考
(defn -main [& echo]
(map
(fn [url]
(let [item-hash (market-listing-url-to-hash-name url)]
(print "Processing " item-hash "...")
(query-item item-hash)
(Thread/sleep 10000)
(println "Done")))
(collect-urls 1)))
谢谢