Javascript 关于基本Rxjs与Promise用法的混淆

Javascript 关于基本Rxjs与Promise用法的混淆,javascript,promise,rxjs,observable,Javascript,Promise,Rxjs,Observable,我知道这听起来很基本,但我对Rxjs有很大的困惑,特别是当我们与Promises比较时,为了使用API获取一些数据。以下是引用自某xyz网站的定义: 承诺对象只能提供一个值。它可以是数组,但仍然是单个对象。相反,随着时间的推移,一个可观察对象可能会发出多个值。 问题: 我的问题是考虑上述定义,如果我们调用一个API,它返回一个数字数组,即[1,2,3,4,5],现在我们使用promise或observable,这两个函数都会在第一次尝试时返回这个数组响应,就这样,那么,当我们说“可观测”随着时间

我知道这听起来很基本,但我对Rxjs有很大的困惑,特别是当我们与Promises比较时,为了使用API获取一些数据。以下是引用自某xyz网站的定义:

承诺对象只能提供一个值。它可以是数组,但仍然是单个对象。相反,随着时间的推移,一个可观察对象可能会发出多个值。

问题:
我的问题是考虑上述定义,如果我们调用一个API,它返回一个数字数组,即[1,2,3,4,5],现在我们使用promise或observable,这两个函数都会在第一次尝试时返回这个数组响应,就这样,那么,当我们说“可观测”随着时间的推移可能会发出多个值时,这意味着什么呢?

它的意思就是它所说的

发出一个值或错误

可观察物体的解剖

随时间发射多个值。在以下情况下停止发射:

  • 可观察的完成
  • 可观察的错误
关于您的API

自动发出一个值后,您的api是否完成了可观测值

  • 它的行为与承诺一样
  • 您必须自行管理完成,否则您的代码将始终期望您的api在将来收到更多值
完成

可以对单个发射和完成操作使用or运算符:

observable$.pipe(
  take(1)
)

仅考虑此比较来区分两个运算符:

允诺只返回单个值(组)因此,如果你想在一段时间内返回一组记录,比如promises会一次性给你所有的记录,而Observable会调用以数组格式一次返回一组记录

@martin向我分享了这个答案,这是最好的答案,也解决了我关于我们需要在什么基于API的场景中以及何时实现Observable的困惑承诺。

谢谢安德鲁的解释,非常感谢乔纳森,这确实澄清了我的大部分困惑。还有一个问题,将来如何从API接收更多响应?请引导,还是我遗漏了什么?看这个@martin非常感谢分享这个答案,这是最好的解释,并解决了我的困惑。@JonathanStellwag是的。我将它标记为重复。将此问题标题中的人转介至答案。不知道为什么它在上面张贴此评论,并且没有链接:/