订阅了 Observable 以后,它就会往 Observer 这里交付数据 .. 订阅的时候会返回一个 subscription,这个 subscription 上面,有一个 unsubscribe 方法,可以取消订阅 Observable ..
取消订阅的意思,就是告诉 Observable ,好了,我现在不需要你再给我交付数据了,别浪费资源了 .. 想像这样一种情况 ..
用户打开我们的应用 .. 点开了一个内容 .. 应用会去请求数据 .. 订阅 Observable,让它交付数据 ..
没等数据返回的时候,用户可能不再想看这个内容了,他关掉了应用的内容页面,打算去看其它的内容 ..
这个时候,我们可以取消订阅 .. 虽然应用的接口最终还是会返回请求的数据,但是我们的应用不会再处理返回的数据了,因为取消了订阅 .. 这样可以少浪费点用户设备上的资源 ..
实验
下面可以模拟一下这种取消订阅 Observable 这种情况 .. 在订阅的时候会返回一个 subscription,给它起个名字,可以是 fruitsSubscription ..
然后假设在某种情况下,我们要取消订阅 ..
这里可以用一下 setTimeout .. 执行一下 fruitsSubscription 上的 unsubscribe 方法 .. 在 1 秒钟以后执行这个方法 ..
保存 ..
控制台上会输出 Observable 交付的一个苹果,还有一个桔子,在这个 Observable 里面,它计划在 2 秒钟以后再交付这个柠檬 .. 然后再告诉 Observer 完成了任务 ..
不过现在,还没等到 2 秒呢,我们就取消了订阅的 Observable .. 就是告诉它,好了,你别再给我数据了,我现在不需要了 ..
这样原本 Observable 要交付的柠檬,还有完成消息,就没有被这个 fruitsObserver 使用 .. 控制台上也就没有输出柠檬,还有完成的消息 ...