gpt4 book ai didi

javascript - "rxjs observable"需要多个而 Promise 不需要多个是什么意思

转载 作者:行者123 更新时间:2023-11-28 14:23:22 27 4
gpt4 key购买 nike

我知道 Promise 和 observables 是如何工作的,但我不确定人们何时说 Observable 可以处理多个事件,而 promise 一次只处理一个事件。

我在互联网上查找,但找不到带有示例的定义来理解它的确切含义。

最佳答案

Observable 可以在不同时间发出不同的值,Promise 只能一次解析为一个值(然后再也不会)。

简单说明:

让我们尝试获取三个异步结果:“a”、“b”和“c”,每个结果多延迟 1 秒。对于可观察的,可以这样完成:

var result = Rx.Observable.create((observer) => {
setTimeout(() => observer.next("a"), 1000);
setTimeout(() => observer.next("b"), 2000);
setTimeout(() => (observer.next("c"), observer.complete()), 3000);
});
result.subscribe(x => console.log(x));

上面的结果是这样的输出,每一行比前一行晚出现 1 秒:

a
b
c

如果你尝试用一个(!) promise 来做到这一点,它不会起作用:

var result = new Promise(resolve => {
setTimeout(() => resolve("a"), 1000);
setTimeout(() => resolve("b"), 2000);
setTimeout(() => resolve("c"), 3000);
});
result.then(x => console.log(x));

这只会输出一个结果(1秒后):

a

即使尝试用“b”和“c”来解析promise,但这也是行不通的:promise 只能解析一次。所有后续对 resolve 的调用都将被忽略。

然而,一个 observable 可以发射多次,并且每次都有不同的值。

当您需要一个(可能很复杂)异步结果时,Promise 非常有用。当您期望一系列异步结果时,可观察量更合适。

关于javascript - "rxjs observable"需要多个而 Promise 不需要多个是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54501317/

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