关于 Rxjs 中 Reduce Scan 的区别

官方手册:https://cn.rx.js.org/class/es6/Observable.js~Observable.html#instance-method-scan

关于Scan 官方描述的比较抽象
实质上和 Reduce 非常相像,熟悉 Array.reduce 的同学对Rxjs 中的Reduce 操作符想必也不陌生。

而 Scan 和 Reduce 在 归并 的原理上是相同的,唯一不同的 Emit 的时机。

Scan

apply a function to each item emitted by an Observable, sequentially, and ==emit each successive value==

Ex:

1
2
3
4
5
6
7
8
9
10
// 依次递加元素
of(1, 2, 3).pipe(scan((acc, curr) => curr + acc))
.subscribe(val => {
console.log('res: ' + val)
})

// 输出结果
res: 1
res: 3
res: 6

Angular2-ChangeDetector

Angular 6 数据发生变化视图不更新

场景

// 首先将任务添加至异步队列
setTimeout(() => {
// 异步队列中加 promise
new Promise()…

}, 0)

此时 resolve 方法中修改数据,发现视图没有更新。

原因

arts-20180910

Algorithm

本次题目由同事提供。

题目
已知字符串 str='abcdefg',求一个方法 unFlattenDeep(str) , 可以返回一个对象 Obj ,使 Obj.a.b.c.d.e.f.g = 1