使用ClojureScript core.JavaScript异步通道

问题描述 投票:0回答:1

我正在尝试使用来自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)之类的操作?

javascript clojurescript core.async
1个回答
0
投票

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

;; CLJS
(take! channel callback)
;; JS
cljs.core.async.take_BANG_(channel, function(val) { console.log(val); });
© www.soinside.com 2019 - 2024. All rights reserved.