订阅操作顺序

问题描述 投票:0回答:1

我有这样的代码:

  get dislpayHello(): boolean {
    let result = false;
    console.log('start');
    
    let observable = of(true);
    observable.subscribe((display) => {
      console.log('set value');
      result = true;
    });

    console.log('finish');
    return result;
  }

堆栈闪电战

我一直认为,无论我们在 subscribe() 中放入什么回调,它都将异步执行,并且由于 JavaScript 是单线程的,因此回调将在当前代码块中剩下的内容之后执行。因此,在这个例子中,我希望

dislpayHello
方法始终返回
false
,并且控制台按顺序登录:“开始”、“完成”、“setValue”。然而,事实并非如此,当我尝试时,订阅块在其余代码之前执行。难道我一直都错了?

我如何知道订阅是立即执行还是推迟?有任何我可以阅读的文档或文章吗?

javascript rxjs
1个回答
0
投票

认为 Observable 始终是异步的,这是一种误解,通常是因为它们经常用于处理 HTTP 请求之类的事情,这些请求是:

Observable 是一种延迟计算的计算,从调用之日起,它可以同步或异步返回零到(可能)无限值。

有些人声称 Observables 是异步的。这不是真的。

https://rxjs.dev/guide/observable

© www.soinside.com 2019 - 2024. All rights reserved.