Clojurescript - #js

时间:2015-08-17 19:12:24

标签: javascript clojurescript

我正在调用一个包含三个参数的本机函数:nativeFunction(success, error, options);

  • success-callback,一个函数ex。 function(s) {console.log(s);}
  • error-callback,一个函数ex。 function(e) {console.log(e);}
  • 选项(如果重要)JSON地图

我有一个像这样的公共ClojureScript函数,包含调用:

;; this works but I can't separate the success from the failure
(defn ^:export publicFn [cb]
  (nativeFunction. cb cb #js {}))

;; this doesn't work
(defn ^:export publicFn [cb]
  (nativeFunction. (partial cb js/undefined) cb #js {}))

所以应该这样调用:myNs.publicFn(function(e, s) {console.log(e, s);});

换句话说,我希望能够在ClojureScript中将双处理程序约定转换为第一个错误参数约定,同时与Javascript兼容。

有可能吗?

1 个答案:

答案 0 :(得分:0)

我必须运行其他代码,否则可能会发生冲突,因为以下解决方案有效:

(defn ^:export publicFn [cb]
  (nativeFunction. (partial cb js/undefined) cb #js {}))

我可以从#js(错误的JavaScript)中调用它,如下所示:

myFn(function(e, d) { console.log(e, d); } );