关于promise:又开始了rxjs-与promise的比较

39次阅读

共计 819 个字符,预计需要花费 3 分钟才能阅读完成。

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

正文完
 0