2016-06-17 7 views
0

以下のコードでは、else ifでhttp呼び出しが行われ、コントロールは次の場所(別のコントローラ)に移動します。 http呼び出しが完了してからreponse.dataが達成された部分に行き、コードの次の部分に行く方法はありますか?私はいくつかのステップを経て、reponse.dataの部分に来るだろうが、コールが行われた直後にそれが起こることを望んでいる。応答が得られるまでHTTPコールアングルが待機していません。

return $q(function(resolve, reject) { 
    //var testEnv = envService.environment == 'development' || envService.environment == 'ci'; 
    testEnv = false; 
    if(testEnv) { 
     var user = _.find(self.getHardCodedUsers(), function(u) { return u.id == id; }); 
     if(user) { 
      resolve(user); 
     } else { 
      reject('No user was found'); 
     } 
    } 
    else if($rootScope.plannerRedirect){ 
     var url = SessionService.jsonUrl(); 
     $http({ 
      url: url + '/user/plannerclient/profile/' + id, 
      method: "GET", 
      headers: { 
      'Authorization': 'Bearer ' + self.getToken() 
      } 
     }).then(
     function(response) { 
      if(response.data) { 
       resolve(response.data); 
      } else { 
       reject('No user was found'); 
      } 
     }, function errorCallback(response) { 
      reject('Sorry, the query could not be performed. Please check your network connection.'); 
     }); 
    } 
    else { 
     var url = SessionService.jsonUrl(); 
     $http({ 
      url: url + '/user/profile/' + id, 
      method: "GET", 
      headers: { 
      'Authorization': 'Bearer ' + self.getToken() 
      } 
     }).then(
     function(response) { 
      if(response.data) { 
       resolve(response.data); 
      } else { 
       reject('No user was found'); 
      } 
     }, function errorCallback(response) { 
      reject('Sorry, the query could not be performed. Please check your network connection.'); 
     }); 
    } 
}); 
+0

編集ありがとう、 –

答えて

0

、あなたはステータスコード2XX 200(OK)、201(作成される)を使用してサーバからのコールバックを必要とする代わりに.then(function(){}); の202(受理)を.success(function(){});を試してみてください。

+0

私は試みました。まだそれは成功の部分に入っていない、それは同じ流れに従っているし、しばらくしてから成功に来ている。以前と同じように。私のデバッグのように、http呼び出しステップに来てから、関数の最後に直接行き、次のコントローラに行って、いくつかのステップを経てそれが成功に向かいます。 –

関連する問題