因此,我已经阅读了有关Observable的内容,甚至在我创建的应用程序中使用了它。因此,这就是我对Observable的理解-它是连续数据流(同步或异步或两者兼有)的包装。因此,基本上它可以返回多个值。此外,还有一个与可观察对象相关联(已订阅)的观察者。每当可观察的执行收到新值时,观察者就会收到它。所以我有两个问题-
如果要返回多个值,为什么不为每个请求创建单独的promise,然后将它们简单地放入promise.all,所以当所有这些请求都解决时,我们就拥有了我们所需要的,而不是做出多个可观察的请求。
我们对它们中的任何一个的使用都取决于我们的用例,如果我们不确定何时,是否以及要接收多少个值,那么当可观察时最有用。因此,例如-如果我们正在听一个connection,我们将收到足球比赛的实时评论,然后将其显示在我们的应用程序中。在这里,我们不知道会收到多少回复。
我知道这是一个非常大的问题,但是我必须说出我现在所理解的一切,因此,如果有任何不清楚的地方,有人会为我清除。
预先感谢。
好吧,我在这里可能错了,但它们的目的完全不同。这是我对它们之间区别的理解。
考虑点1,并考虑点2,如果承诺来源持续增长,我们将永远无法达到解决状态,因为我们只能在承诺中解决一次,这就是为什么可观察变量在这里是好的。只要有变化发生,他们就会做出反应
var a = async(b + c);
var d = wait for a;
what is d?
承诺知道d,我们只需要b + c。我们知道它会发生,但只有我们不知道什么时候才能等到。最终会(解决)链中有多少无关紧要。即使是链子
var a = async(b+c) + async (c+d)
var d = promise.all(a)
这是promise。所有都等待,但是在发生(解决)之后,就没有必要再等待promise。因为我们不在乎a会发生什么。
var a = 1 + 1 for every second;
var d = a + 1;
what is d?
在这里,我们永远不会知道d的值会不断变化。我们只能读取(观察)当前值a并获得d的当前值。
var a = 1 + 1 for every second;
var d = observe(a) + 1;
但是如果在这种情况下使用它,我们将无法使用promise.all
var a = 1 + 1 for every second;
var d = promise.all(a) + 1; //wont work
总有变化。因此我们必须永久等待。那就是promise.all和observables之间的区别。对不起,很长的帖子。