gpt4 book ai didi

clojurescript - 不能在 clojurescript 中使用异步函数

转载 作者:行者123 更新时间:2023-12-01 23:27:42 24 4
gpt4 key购买 nike

我正在尝试在 cljs 中使用一个名为 "systeminformation" 的 npm 包
它的大部分功能是异步的,有些是非异步的
但我无法使用异步功能,其他一切正常
相关进口

[clojure.core.async :as async] 
["systeminformation" :as systeminformation]

我正在尝试运行的代码

(comment
(systeminformation/version) // WORKS FINE
(async/go
(async/<! (systeminformation/cpu))) // Gives me error
)

错误:

INFO [mutesync.inspect.electron.background.main:30] - STACK
TypeError: c.cljs$core$async$impl$protocols$ReadPort$take_BANG_$arity$2 is not a function
at cljs$core$async$impl$ioc_helpers$take_BANG_ (D:\Tom\mutesync\.shadow-cljs\builds\electron-main\dev\out\cljs-runtime\cljs\core\async\impl\ioc_helpers.cljs:52:1)
at switch__47338__auto__ (<eval>:8:52)
at <eval>:32:29
at Function.fexpr__47378 [as cljs$core$IFn$_invoke$arity$1] (<eval>:54:4)
at Object.cljs$core$async$impl$ioc_helpers$run_state_machine [as run_state_machine] (D:\Tom\mutesync\.shadow-cljs\builds\electron-main\dev\out\cljs-runtime\cljs\core\async\impl\ioc
_helpers.cljs:43:3)
at cljs$core$async$impl$ioc_helpers$run_state_machine_wrapped (D:\Tom\mutesync\.shadow-cljs\builds\electron-main\dev\out\cljs-runtime\cljs\core\async\impl\ioc_helpers.cljs:45:1)
at <eval>:84:67
at Immediate.cljs$core$async$impl$dispatch$process_messages (D:\Tom\mutesync\.shadow-cljs\builds\electron-main\dev\out\cljs-runtime\cljs\core\async\impl\dispatch.cljs:26:7)
at processImmediate (internal/timers.js:456:21)
ERROR [mutesync.inspect.electron.background.main:68] - uncaught error
TypeError: c.cljs$core$async$impl$protocols$ReadPort$take_BANG_$arity$2 is not a function

最佳答案

JS 中的异步函数是返回 Promise 的函数的语法糖.

core.async默认情况下不与 Promises 一起使用,如果您愿意,您需要使用辅助函数使它们像 channel 一样工作。 <p!宏会为您做这件事。

(ns test.foo
(:require
[clojure.core.async :as async]
[cljs.core.async.interop :refer (<p!)]
["systeminformation" :as systeminformation]))


(async/go
(prn (<p! (systeminformation/cpu))))

或者你可以只.then.catch带有回调的 Promise。不需要 core.async这样做的时候。

(-> (systeminformation/cpu)
(.then prn))

还有一个guide可用的主题。

关于clojurescript - 不能在 clojurescript 中使用异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66941461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com