代码之家  ›  专栏  ›  技术社区  ›  Aquarius_Girl

如果RxJS中的“of”是同步的,因为它一次返回所有值?

  •  0
  • Aquarius_Girl  · 技术社区  · 5 年前

    主要区别在于 of from 是吗 属于 一次返回所有值 将它们逐一返回。

    这是否意味着如果我们使用 属于 有了Observable,它们开始以同步的方式表现?

    让它们表现异步的方法是使用 ?

    0 回复  |  直到 5 年前
        1
  •  2
  •   martin    5 年前

    RxJS中的所有内容都是同步的,除非您使用延迟或有意使用异步调度器,例如 asyncScheduler .

    当你有一个RxJS链时,它是同步还是异步只取决于你使用的运算符和源Observable的行为。所以这不是什么特别的 of() from() .即使在 from([1, 2, 3]) of(1, 2, 3) 发出三个值,它将同步发出。

    还要注意,您无法将异步链转换为同步行为。

        2
  •  1
  •   Gunnar B.    5 年前

    这里有一个轻微的误解(正如Kaustubh所暗示的那样):
    of 不会一次返回其所有值。只是这样 属于 可以接受可变数量的参数,而 from 只需要一个。

    属于 将每个给定的参数解释为值,同时 将把单个给定的论点变成可观察的。

    因此,其行为是相同的:

    of(1, 2)
    from([1, 2])
    

    而这并没有:

    of([1, 2])
    from([1, 2])
    
        3
  •  0
  •   Kaustubh Badrike    5 年前

    考虑以下情况,

    const myValues = ['val1', 'val2', 'val3'];
    
    const atOnce = Observable.of(myValues); // This will emit the entire myValues array as a single emission.
    
    // The Observables below are similar in behaviour
    // The will emit the values from myValues one at a time
    
    const discreteOne = Observable.of(...myValues);
    const discreteTwo = Observable.from(myValues);
    

    请参阅 this post 更多。