我在包装 JS 库时遇到了一些麻烦,因为我无法让 .done 回调正常工作。在 JavaScript 中,代码如下所示:
db.values("inventory").done(function(item) {
console.log(item);
});
所以我尝试了几个(非常脏的)ClojureScript 方法来翻译这个:
(defn log []
(console/log "working?"))
(defn stock []
(#(.done % log) (.values db "inventory")))
和
(defn stock []
(js* "db.values('inventory').done(function(item) {
console.log(item);
})"))
但这些都不起作用。错误消息总是类似于:db.values(...).done is not a function
是否有任何协议扩展(或其他任何东西)可用于覆盖 JS 回调?否则,可以 goog.async.Deferred 以某种方式再次拦截回调吗?