2017-02-23 27 views
0

私はangular2を使っています。 今、subscribe()内で値を取得するのが難しいです。 nullが返されることはわかっています。 正しい値を返すにはどうすればよいですか?RxJS subscribe()関数内で変数を取得する方法は?

ここに私のコードです。誰でも私に助言を与える、それは非常に役立つだろう。ありがとう:)

this.deliveryService.deliveryCancel(rowInfo.branchId, rowInfo.id).subscribe(
 
       res => { 
 
       var data = res.json(); 
 
       this.getDeliveryList(); 
 
       this.msgs.push({ severity: 'success', summary: 'Info', detail: rowInfo.deliveryStatus }); 
 
       }, 
 
       err => { 
 
       this.errMessage = <any>err; 
 
       this.msgs.push({ severity: 'error', summary: 'Error', detail: this.errMessage }); 
 
       } 
 
      ); 
 
      
 
      console.log(data);

deliveryCancel()

deliveryCancel(branchId, deliveryId) { 
 
    const headers = new Headers({ 
 
     'Content-Type': 'application/json' 
 
    }); 
 
    return this.http.put(this.testUrl + '/admin/branches/' + branchId + '/deliveries/' + deliveryId + '/cancel', { 
 
     headers: headers 
 
    }) 
 
     .catch(handleError); 
 
    }

+0

? – shusson

+0

RXJSはどこにありますか?あなたの質問には購読方法はどこですか? –

+0

@shusson、私は自分のコードを編集するだけです。私の悪い:( –

答えて

0

あなたはそのようなres.jsonを()にアクセスすることはできません。クラス変数として 'データ'を初期化します。これを試して。

data = {}; 

this.deliveryService.deliveryCancel(rowInfo.branchId, rowInfo.id).subscribe(
      res => { 
      this.data = res['_body']; 
      this.getDeliveryList(); 
      this.msgs.push({ severity: 'success', summary: 'Info', detail: rowInfo.deliveryStatus }); 
      }, 
      err => { 
      this.errMessage = <any>err; 
      this.msgs.push({ severity: 'error', summary: 'Error', detail: this.errMessage }); 
      } 
     ); 

     console.log(data); 
+0

は、あなたが 'にconsole.log(データ)の結果をどう思います'になりますように、非同期呼び出しについて知っておく必要があると思う「NULL」 を出力します? – echonax

+0

@ラジmは、あなたの答えのおかげで、それはまだヌル –

+0

コンソール「RES」を印刷し、私は –

0

これは角度の質問ではありませんが、より多くの非同期動作に関する実行時のフローを破るJavaScriptの質問です。

Suscribingは、任意のエラーやdeliveryCancel(によって返さ成功)に、RES機能やErr関数が呼び出されることを意味します。

あなたにconsole.log(データ)は、一度だけ実行され、それらの機能の一部は決してされます。

これは、あなたが後にしているものです:あなたは、あなたの質問を明確にし、あなたが投稿したコードにそれを関連付けることができ

this.deliveryService.deliveryCancel(rowInfo.branchId, rowInfo.id).subscribe(
     res => { 
     this.data = res['_body']; 
     this.getDeliveryList(); 
     this.msgs.push({ severity: 'success', summary: 'Info', detail: rowInfo.deliveryStatus }); 
console.log(data); 
     }, 
     err => { 
     this.errMessage = <any>err; 
     this.msgs.push({ severity: 'error', summary: 'Error', detail: this.errMessage }); 
console.log(data); 
     } 
    ); 
+0

あなたはdeliveryCancelも呼び出さなければなりません。 – Arinaud

+0

私はpersonally ngAfterViewInitのobservablesを購読する – Arinaud

+0

返信いただきありがとうございます! しかし、それは私が知りたいことではありません。 subscribe()の外部で 'data'を使用する方法を知りたかった –

関連する問題