使用Javascript

时间:2019-10-26 22:28:19

标签: javascript clojurescript core.async

我正在尝试使用Node.js Electron项目中的cljs库。

我在cljs库中调用的函数返回一个core.async通道对象。当我console.log时是这样的:

{
  takes: { head: 0, tail: 0, length: 0, arr: [ <32 empty items> ] },
  dirty_takes: 0,
  puts: { head: 0, tail: 0, length: 0, arr: [ <32 empty items> ] },
  dirty_puts: 0,
  buf: {
    buf: { head: 0, tail: 0, length: 0, arr: [Array] },
    n: 1,
    'cljs$lang$protocol_mask$partition0$': 2,
    'cljs$lang$protocol_mask$partition1$': 0
  },
  closed: false,
  add_BANG_: [Function: G__11914] {
    'cljs$core$IFn$_invoke$arity$1': [Function: G__11914__1],
    'cljs$core$IFn$_invoke$arity$2': [Function: G__11914__2]
  }
}

如何通过Javascript与之交互? 如何在js中做类似(take! channel callback)的事情?

1 个答案:

答案 0 :(得分:0)

如果您可以从JS访问cljs.core.async名称空间,则可以执行此操作。

;; CLJS
(take! channel callback)
;; JS
cljs.core.async.take_BANG_(channel, function(val) { console.log(val); });