在Angular中不再有来自rxjs 6.X的异步或回调

在Angular中不再有来自rxjs 6.X的异步或回调,angular,asynchronous,service,callback,rxjs,Angular,Asynchronous,Service,Callback,Rxjs,如果我使用旧版本的rxjs,console.log的输出是: I have a simple service in Angular-6 app. console.log("01: try to get Users..."); let subScription = this.userService.getUsers().subscribe( data => { this.Users = data; console.log("03: set

如果我使用旧版本的rxjs,console.log的输出是:

I have a simple service in Angular-6 app.

console.log("01: try to get Users...");
    let subScription = this.userService.getUsers().subscribe(
      data => {
        this.Users = data;
        console.log("03: set users...");
      },
      (error) => {
        console.error("Error to get data: ", error)
      },
      () => {
        console.log("04: complete get data....", )
      });

    console.log("02: return control to function call if service works like a promise")
使用RxJS 6.X,输出如下所示:

01: try to get Users...
02: return control to function call if service works like a promise
03: set users...
04: complete get data
有人有同样的问题吗?如果是,那么如何像以前一样解决这个问题

谢谢


Austin

您需要先显示userService.getUsers的代码,然后才能说明它为什么会这样运行

但是,如果要强制其异步,则可以在asap调度程序上按如下方式安排订阅:

01: try to get Users...
03: set users...
04: complete get data
02: return control to function call if service works like a promise

这确保了subscribe调用以异步方式进行,并将为您提供以前的行为。

如果服务像承诺一样工作,那么您为RxJS 6提供的输出就不会出现。RxJS无法消除异步。getUsers的实现必须已更改。介意分享代码吗?谢谢你的帮助。在本例中,我返回模拟数据,我需要添加一些时间,使其像以前一样工作。返回usersObservable.pipedelay10,。。。。。
import {subscribeOn} from 'rxjs/operators';
import {asapScheduler} from 'rxjs';

// ...
this.userService.getUsers().pipe(subscribeOn(asapScheduler)).subscribe(...)