语境
我正在使用 ClojureScript,所以 Ajax 对我的工作方式如下:
(make-ajax-call url data handler);
处理程序看起来像:
(fn [response] .... )
现在,这意味着当我想说“获取新数据并更新左侧边栏”之类的话时,我的最终结果看起来像:
(make-ajax-call "/fetch-new-data" {} update-sidebar!) [1]
现在,我宁愿把它写成:
(update-sidebar! (make-ajax-call "/fetch-new-data" {})) [2]
但它不起作用,因为 make-ajax 调用立即返回。
问题
有没有办法通过单子或宏来完成这项工作?这样 [2] 会自动重写为 [1] 吗?我相信:
- 不会有性能惩罚,因为它被重写为 [1[
我可以更清楚地推理,因为我可以以同步步骤而不是异步事件来思考
我怀疑我不是第一个遇到这个问题的人,所以如果这是一个众所周知的问题,那么“Google for Problem Foo”形式的答案是完全有效的。
谢谢!