2017-11-13 11 views
0

このコードブロックでは、グローバル値が1であるため、「if(flag == 0)」文は実行されません。どのようにしてフラグのグローバル値を変更できますか?TypeScriptでは、グローバル変数の値をローカルでどのように変更するのですか?

this.auth0.client.login() 

は非同期です:

+1

グローバル値が1であるため、「(フラグ!= 0) * "は意味をなさない。 '1!== 0'。 –

+0

1) 'flag!= 0'を' flag!== 0'に変更します。そして、そのステートメントは、フラグが1にセットされたときに常に発動すべきです。2)loginメソッドの非同期性のために、そのセクションが起動すると 'flag'は決して変更されません。 – VtoCorleone

答えて

1

あなたの主な問題は、ということです。そのため、コールバック関数を渡しています。これが何を意味するのか

は、操作の順序があるということである。

  1. let flag = 1
  2. flagはまだ1つの
  3. 非同期コールバックの火災に等しく、あなたはフラグを設定しようとするが、それは遅すぎだから、もちろん発生しませんif (flag == 0) // this.auth0.client.login()
  4. テストで非同期操作を開始し

どういうわけかロジックを物事の非同期側に移動する必要があります。これにより、あなたのメインのlogin()is.auth0.client.login()が完了したときに発射できるコールバックを受け入れるか、または約束を使用する必要があります。

あなたのif(flag == 0) {}テストは、コールバック内にある必要があります。そして、おそらくあなたは新しいローカル変数を作成したくないかもしれません。flag = 0;let flag = 0;

関連する問題