1.promise 的 resolve 与 reject,任何时候都是异步的,会将回调放在下一个微工作的循环中调用
let nn = Promise.resolve('niahoP1');nn.then(console.log)console.log('niahoP2')// niahoP2 niahoP1
2.rxjs 的 subscribe 是同步的,流更新之后立即就会同步调用订阅者
let su = new rxjs.Subject()console.log('nihao1')su.subscribe(console.log);su.next('nihao3')console.log('nihao2')// nihao1 nihao3 nihao2// 很遗憾,然而事实就是这样的
3.流解决中产生了任何的未捕捉的谬误,都会导致这个流挂掉,前面再更新流无奈触发订阅
let {map, switchMap} = rxjs.operators;let { Subject } = rxjs;let ss = new Subject();ss.pipe( map(value => { console.log(value, Object.keys(value), 'keys') // console.log(value.b.c) // 失常状况 > ss 2 // 放开这一行会有一个执行谬误,这时后果为 TypeError: Cannot read property 'c' of undefined return value })).subscribe({ complete: console.log, error: console.log, next: console.log})ss.next('ss')setTimeout(() => {ss.next(2)}, 2000)
4.完犊子,这里代码我看不懂了,如果subject的订阅是同步的,那为什么宏工作中报错的代码,下一行代码还会继续执行呢?我傻了,,,
http://jsrun.net/pzaKp/edit