2017-02-07 6 views
0

私はJavaでプロジェクトを進めています。特にSpringとAngularJSを使用しています。私のページの読み込み(ng-init)は、環境変数のリストを取得する$ httpクエリを呼び出す関数を実行します。その後、常にページをロードし、最初のクエリの結果を必要とする別の$ httpリクエストを呼び出します。フロントエンドの環境変数

問題は、最初のクエリが終了する前に2番目のクエリが実行されるため、現時点では環境変数が定義されていないことです。私は非同期クエリの問題があります。

解決策をご存知ですか?

ありがとうございます

+0

非同期操作の約束を使用してください – MMK

+0

あなたのコードのいくつかを表示できますか?私の理解では、2番目の$ httpを.thenあなたの最初の$ http – darron614

+0

$ q.all([firstHttpRequestPromise])のブロック(/)ブロックします。 – MMK

答えて

0

約束を使用してください。最初の関数asyncを作成し、2番目の関数を最初の関数の.then()に入れます。

0

documentation for the $qサービス(AngularJs(1.x)の実装はPromises)を確認してください。

はおそらく、この

$http.get('url1') 
    .then(function (response1) { 
     console.log(response1); 
    }); 

$http.get('url2') 
    .then(function (response2) { 
     console.log(response2); 
    }); 

保証するものではありません$httpによって返された約束に連鎖し.then呼び出しの外でこの

$http.get('url1') 
    .then(function(response1) { 
     console.log(response1); 
     return $http.get('url2') 
    }) 
    .then(function(response2) { 
     console.log(response2); 
    }); 

何かのようになりますあなたのコード(そしておそらくのようなものを持っています)は、呼び出しが返された後に実行されません。

HTTP要求/応答の非同期フローを制御するために約束(または頻繁に使用されないコールバック)を使用しないと、これらの操作が互いに関係して発生することを保証することができません。

0

ここに私のコード、ドキュメントサービスで、HTTPリクエストを返すloadDocument:loadDocumentが実行されると

$http.get('/env').then(function(variables) { 
    Document.loadDocument(variables).then(function (data) { 
      // next code..... 
    }); 
}); 

、変数が定義されていません。私は約束の利用をよく理解していません。