超过承诺的渠道。为啥以及如何使用?

Posted

技术标签:

【中文标题】超过承诺的渠道。为啥以及如何使用?【英文标题】:Channels over promisses. Why and how to use?超过承诺的渠道。为什么以及如何使用? 【发布时间】:2019-08-21 05:42:14 【问题描述】:

我承认我还没有学习core.async。 IE。我不知道异步工作的 clojure 方式,但我知道这主要是使用通道。我主要在 clojurescript 中工作,我将开始编写 service worker。

找了this library写promise作为channel,但是感觉不用这个库也没什么大不了的。

那么,在任何情况下我都应该使用通道而不是承诺吗?

有没有使用通道从 Promise 到 core.async 的简单转换?

【问题讨论】:

有人有使用 js 承诺实现的东西和使用渠道实现的相同东西的并排示例吗? 【参考方案1】:

如果您查看 core.async 的原始原理,当它比使用另一个线程(例如 future)具有优势时会变得更加清晰。 ClojureScript 是最大的驱动力之一,因为它是单线程的,没有其他选择。

一些资源:

https://clojure.org/news/2013/06/28/clojure-clore-async-channels https://github.com/clojure/core.async/blob/master/examples/walkthrough.clj https://cognitect.com/videos.html(CLJS core.async 上的 2 个) https://github.com/cognitect/async-webinar https://rigsomelight.com/drafts/clojurescript-core-async-todos.html https://medium.com/@loganpowell/cljs-core-async-101-f6522faf536d

【讨论】:

请避免仅链接的答案。最好用链接支持答案,但请在帖子本身中写下这些资源对渠道与承诺的陈述。

以上是关于超过承诺的渠道。为啥以及如何使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何做出递归承诺

你如何正确地承诺请求?

回调解决未处理的承诺,为啥?

如何修复可能的未处理承诺拒绝(id:0)?以及如何修复无法读取未定义的属性“导航”?

如何增强自己的知识/数据获取能力?都有哪些渠道?

为啥JAVA进程占用内存会超过Xmx设置