gpt4 book ai didi

javascript - 从 Observable.create 返回的函数如何/何时执行(rxjs)

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:38 24 4
gpt4 key购买 nike

我有来自“https://chrisnoring.gitbooks.io/rxjs-5-ultimate/content/observable-anatomy.html”的以下代码':

const Observable = require('rxjs/Observable').Observable;
require('rxjs/add/observable/of');
require('rxjs/add/operator/map');

let stream = Observable.create((observer) => {
let i = 0;
let id = setInterval(() => {
observer.next(i++);
}, 500);

return function () { // Line 11
clearInterval(id);
};
})

let subscription = stream.subscribe((value) => {
console.log('Value: ', value);
})

setTimeout(() => {
subscription.unsubscribe();
}, 1500);

该程序的输出如下。程序在输出“Value: 1”后自动终止。

> node index.js

Value: 0
Value: 1

由于该语句返回一个函数引用,并且返回函数不会在外部任何地方被调用,所以我的问题是,第 11 行的返回函数如何/何时执行?我们可以肯定地推断它正在执行,因为计时器实际上被清除并且 Node 正在终止程序。

最佳答案

每当观察者取消订阅时,清理操作函数就会运行。

这包括:

  • 调用subscription.unsubscribe()
  • 使用像 take() 这样的运算符,在满足条件后自动取消订阅
  • 如果/当可观察完成或发生错误时

关于javascript - 从 Observable.create 返回的函数如何/何时执行(rxjs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44681005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com