2017-09-15 4 views
0

秒の数値が表示されます。設定されたタイムアウト間隔を設定する必要があります。この間隔では、内部に複数の要求があります。私はトークンを持つヘッダーがない場合、エンドポイントの値を取得できません。それは私の問題に私をもたらします。 401エラーが発生した場合、関数は完全に停止します。私は関数が401の場合、どのように機能し続けるでしょう。私は、間隔で間隔をラップするだけなので、デフォルト間隔の設定はうまくいかないと思います。何かご意見は?ありがとう。これは2+認証されたエンドポイントで設定されたタイムアウト値の取得

app.component.ts

constructor(){ 
this.firstInterval() 
} 

firstInterval(){ 
    this.service.getSeconds().subscribe(result => { 
     result.secondsbetween 
     this.getGPSInterval(result.secondsbetween, 60000) 
    }) 
    }  

    getGPSInterval(firstTime, secondTime){ 

    if(firstTime > 0){ 
    setInterval(() => { 
     this.endpoint() 
    },parseInt(firstTime + '000')) 
    } 
    else{ 
     setInterval(() => { 

      this.endpoint() 

     },secondTime) 
    } 
    } 

答えて

1

あなたはまだ起こっても、エラーが発行されますfinally演算子を使用することができ、基本的な角度、イオン2+です。 this.service.getSeconds()が失敗するように、デフォルトの間隔が必要であることに注意してください。

defaultInterval = 1000; // your real default interval value 
realInterval = null; 
this.service.getSeconds().finally(() => {    // finally operator 
    this.getGPSInterval(this.defaultInterval, 60000); // defaultInterval: error => 1000, success => real interval value from result.secondsbetween 
}).subscribe(result => { 
    this.defaultInterval = result.secondsbetween;  // replace with real interval value from result.secondsbetween 
}) 

Plunker demo

+0

エンドポイントが承認されると、デフォルトの間隔が実際の間隔に置き換えられる可能性はありますか?それが立つにつれて、最初に他のものが返ってきたら何が残るのでしょうか?私はその周りに3番目の間隔を追加しなければならないと思いますか?それは不可能です。 – userlkjsflkdsvm

+0

@userlkjsflkdsvmデフォルトインターバルを実際のインターバル – Pengyy

+0

に置き換えることができます。 – userlkjsflkdsvm

関連する問題