RxJS基本单子词典
本文将介绍 Rx 中的 Subject、Observer、Observerable 等单子在生产中的可能用法,而不介绍amb 算子这样的态射,因为介绍态射的文章明显更多。
为方便了解,我提供了一些特性示例,放入一个 js 文件即可执行。在执行之前需要在文件夹里 npm i rxjs bluebird babel-core
babel-polyfill babel-preset-stage-0
,然后加一个 .babelrc
内书:
{ "presets": ["stage-0"] }
然后以 node -r "./node_modules/babel-core/register" -r "./node_modules/babel-
polyfill/lib/index.js"
运行。
~~这么一想,新手想尝试性运行现代 JS 居然还蛮麻烦的嘛?~~
单子
单子指的是 Promise、Array、Observerable 这样的容器,可以把 number、string、Object 这样的类型提升到新的范畴里。在 TypeScript 里我们所写的尖括号就描述了这一提升:
const aaa: Promise<number>; const bbb: Array<string>; const ccc: Observerable<Request>;
态射指的是 map、reduce、filter 这样的函数。我们知道 aaa.map(item => item.someProp)
返回的还是一个
Promise,只是里面装的东西可能不一样了(可能装着一个 error),同样地 ccc.map(item => item.someProp)
返回的还是一个 Observerable,这种返回值的一致性让我们可以组合使用函数,特别是组合使用 lodash
提供的那些函数。
RxJS 说它是 Observerable 的 lodash,指的就是它提供了各种各样的态射,对 Observerable 使用这些函数依然返回 Observerable。
AsyncSubject 「Resolve 多个值的 Promise」
众所周知,Promise 会在 resolve 后将内部的值吐出来,它可以吐出一个值,比如一个 number、一个 string、一个 Object。虽然通过 Object 我们可以一次性解构出好多个值,但这时候 Object 内的几个值是同步地吐出来的,也就是说这个 Promise 后面的 then 只会被调用一次。
...
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: