const observable = new Observable((observer) => {
// observer.next(5); // 输出是 5! And now we are here.
setTimeout(() => { // 输出是 And now we are here. 5!
observer.next(5);
})
});
observable.subscribe(value => console.log(value + '!'));
console.log('And now we are here.');
Cancelable VS Not Cancelable 上例中Observable可以被cancel,方法如下。Promise不可以,一旦resolve,then中注册的回调函数就会被执行
Not Lazy VS Lazy Observable: 被订阅的时候才会执行, Promise: 定义的时候就被执行,且只执行一次,不管有没有promise.then
Multiple VS Single subscriber
执行顺序 Promise.then(resolver)中注册的回调会进入到微任务列表,所以必定异步。 Observable.subscribe(observer)中注册的回调会在本宏任务中直接执行。