angular2等到可观察完成后如果条件

koh*_*hli 23 observable angular

我已经实现了这样的if语句

if (this.service.check() ) {
      return true;
    }
    else {
}
Run Code Online (Sandbox Code Playgroud)

如果条件等待来自后端的响应.但是在observable执行之前,它会进入else语句并完成条件而不会在开始时检查if条件.

这是我从后端获取数据的可观察方法

public check(){
      this.getActorRole().subscribe(
        (resp => {
          if (resp == true){
             return true
         }

        }),
        (error => {
          console.log(error);
        })
      );
    }
}
Run Code Online (Sandbox Code Playgroud)

那么如何使条件等待直到它从后端得到响应

Gün*_*uer 24

你不能等待ObservablePromise完成.您只能订阅它以在完成或发出事件时收到通知.

public check(){
   return this.getActorRole() // <<<=== add return
   .map(resp => {
          if (resp == true){
             return true
         }
      );
    }
}
Run Code Online (Sandbox Code Playgroud)

那么你可以做到

this.service.check().subscribe(value => {
  if (value) {
    return true;
  }
  else {
  }
}
Run Code Online (Sandbox Code Playgroud)

但是如果此代码的调用者也依赖于您再次需要的返回值

this.service.check()
.map(value => {
  if (value) {
    return true;
  }
  else {
  }
}
Run Code Online (Sandbox Code Playgroud)

然后执行subscribe()您调用此代码的位置