Javascript 关于基本Rxjs与Promise用法的混淆
我知道这听起来很基本,但我对Rxjs有很大的困惑,特别是当我们与Promises比较时,为了使用API获取一些数据。以下是引用自某xyz网站的定义: 承诺对象只能提供一个值。它可以是数组,但仍然是单个对象。相反,随着时间的推移,一个可观察对象可能会发出多个值。 问题:Javascript 关于基本Rxjs与Promise用法的混淆,javascript,promise,rxjs,observable,Javascript,Promise,Rxjs,Observable,我知道这听起来很基本,但我对Rxjs有很大的困惑,特别是当我们与Promises比较时,为了使用API获取一些数据。以下是引用自某xyz网站的定义: 承诺对象只能提供一个值。它可以是数组,但仍然是单个对象。相反,随着时间的推移,一个可观察对象可能会发出多个值。 问题: 我的问题是考虑上述定义,如果我们调用一个API,它返回一个数字数组,即[1,2,3,4,5],现在我们使用promise或observable,这两个函数都会在第一次尝试时返回这个数组响应,就这样,那么,当我们说“可观测”随着时间
我的问题是考虑上述定义,如果我们调用一个API,它返回一个数字数组,即[1,2,3,4,5],现在我们使用promise或observable,这两个函数都会在第一次尝试时返回这个数组响应,就这样,那么,当我们说“可观测”随着时间的推移可能会发出多个值时,这意味着什么呢?它的意思就是它所说的 发出一个值或错误 可观察物体的解剖 随时间发射多个值。在以下情况下停止发射:
- 可观察的完成
- 可观察的错误
它的行为与承诺一样是
您必须自行管理完成,否则您的代码将始终期望您的api在将来收到更多值否
observable$.pipe(
take(1)
)
仅考虑此比较来区分两个运算符:
允诺只返回单个值(组)因此,如果你想在一段时间内返回一组记录,比如promises会一次性给你所有的记录,而Observable会调用以数组格式一次返回一组记录@martin向我分享了这个答案,这是最好的答案,也解决了我关于我们需要在什么基于API的场景中以及何时实现Observable的困惑承诺。谢谢安德鲁的解释,非常感谢乔纳森,这确实澄清了我的大部分困惑。还有一个问题,将来如何从API接收更多响应?请引导,还是我遗漏了什么?看这个@martin非常感谢分享这个答案,这是最好的解释,并解决了我的困惑。@JonathanStellwag是的。我将它标记为重复。将此问题标题中的人转介至答案。不知道为什么它在上面张贴此评论,并且没有链接:/