2017-01-28 4 views
9

私はAを実装している場合には、観察が終了するまで待つかのバックエンドからの応答のための条件を待機する場合は、このangular2は、条件が

if (this.service.check()) { 
     return true; 
    } 
    else { 
} 

このような文。しかし、観測が実行される前に、else文に入り、開始時にif条件をチェックせずに条件を終了します。

これは、それがバックエンド

答えて

14

からの応答を取得するまで、どのようにあなたがObservableを待つことができない状態の待機を行うバックエンド

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

     }), 
     (error => { 
      console.log(error); 
     }) 
    ); 
    } 
} 

からデータを取得するための私の観察可能な方法であり、またはPromiseが完了します。それを購読して、イベントが完了したときに通知を受けることができます。

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

このコードの呼び出し側はまた、あなたが再び呼び出すsubscribe()を行い、その後

this.service.check() 
.map(value => { 
    if (value) { 
    return true; 
    } 
    else { 
    } 
} 

に必要と戻り値に依存している場合、あなたは

this.service.check().subscribe(value => { 
    if (value) { 
    return true; 
    } 
    else { 
    } 
} 

しかしを行うことができますこのコード

+0

私はすでに.mapを実装していますが、それはelse条件を実行していますcheck()関数がfinsheの実行前にdを返します。だから、コードは 'map(...)'、 'subscribe(...)'、または他の観測可能な演算子の中になければならないので、常にelse条件 – kohli

+0

に向かいます。 –