功能定义

resetComponent(){
  console.log("1st");
  ...
  this.background = { };
  this.uploadMode = false;
  this.service.getItem(this.watch.appId, true).subscribe((watch) => {
    this.background = { ... };
    console.log("2nd");
  }, ()=> {});
}



我的代码

console.log("before resetComponent()");
resetComponent();
console.log("after resetComponent()");


它不适用于异步。

我想看到这样的控制台

before resetComponent()
1st
2nd
after resetComponent()


我不完全理解async

我如何实现我的目标?

最佳答案

一旦调用subscribe(),您的代码将继续运行,并且您的订阅将异步运行。

您会想要这样的东西。您将要在此处使用管道而不是订阅。确保您返回可观察的位置,以便以后可以订阅。 :

resetComponent() {
    console.log("1st");
    this.background = {};
    this.uploadMode = false;
    return this.service.getItem(this.watch.appId, true).pipe((watch) => {
            this.background = { ... };
            console.log("2nd");
        }, () => { });
    }


然后使用订阅调用它。

console.log("before resetComponent()");
resetComponent().subscribe(() => {
     console.log("after resetComponent()");
});

07-24 19:03