2017-05-08 14 views
0

が、私はこのように、観測返すメソッドを持っていRXJS。それはうまくいく。 (コールバックが呼ばれるので、1〜2秒後)
2番目のログ「この行を呼び出し」:ログでブロック現在のスレッドが

public executeInfo(): string { 
    this.getCpuUsage() 
     .subscribe({ 
      next: (infoAboutCpu) => { 
       console.log(" Result: " + infoAboutCpu); 
       return infoAboutCpu; 
      } 
     }); 

    console.log('Call this line'); 
    return '-1'; 
} 

項目:
最初のログ

他のクラスは以下のように、このメソッドを呼び出すことができます。 'Result:$ {value_cpu_info}'

Observableの結果を得るまで、どのように現在のスレッドをブロックできますか?メソッドexecuteInfo()は正しい値を返す必要があります。

+2

できません。それはObservablesの全ポイントです。**非同期**操作の結果を表します。 executeInfo()はObservable(またはPromise)のみを返すことができます。 –

+1

現在のスレッドをブロックしようとしないでください - javascriptにはスレッドが1つしかなく、アプリケーション全体がスタックします。上記のコメントでJB Nizetが示唆しているように、executeInfo()が観測値を返すようにします。 –

+0

ここにいくつかの問題があります。 'next:'は、コールバックからの戻り値を伝播しません。また、オブザーバブルは動作可能ですが、これはPromiseと同じように感じられます。誰もがすでに言っているように、JavaScriptの唯一のスレッドをブロックすることは非常に望ましくないでしょう。実際のコードではおそらく必要ですが、質問に示されたユースケースをカバーするためにブロックする必要はありません。 –

答えて

0

ブロック現在のスレッドが

をRXJS JavaScriptで唯一の1スレッドがあります。あなたはそれをブロックすることができます

while(true) { 
// insert break logic here 
} 

しかし、私は非常にあなたが要件を再考することをお勧めします。

+0

現在のスレッドをブロックしようとしないでください.JavaScriptにはスレッドが1つしかなく、アプリ全体がスタックします。 –

+0

ありがとう、私は私のアプリケーションロジックを変更しました。 – AndreyNik

関連する問題