2016-11-09 2 views
0

次のコードで$ q.defer()を使用するとは何ですか?私はちょっと混乱しているか、$ qの使用や延期を理解できませんか?

service.serviceCall = function (methodName, params) { 
    var deferred = $q.defer(); 
    $http({ method: "POST", url: url + methodName, data: params, headers: headers }).success(function (result) { 
     deferred.resolve(result); 
    }).error(function (result) { 
     deferred.reject(result); 
    }); 
    return deferred.promise; 
} 
+0

ここでのヘッダーは次のとおりです。var headers = {"Content-Type": "application/json; charset = utf-8"、 "dataType": "json"}; – SANDIP

+0

約束を読んでください:http://andyshora.com/promises-angularjs-explained-as-cartoon.html 次に、$ qモジュールドキュメントをご覧ください:https://docs.angularjs.org/api/ng/service/$ q – aliasav

答えて

0
service.serviceCal("POST", {"param1":"value1"}).then(function(data){ 
    //here data will be object which is resolved in success call 
}).fail(function(){ 
//here data will be object which is rejected in failure call 
}) 

これは(約束、我々のユーザーの$ q.deferある)defer.promiseを()を使用して、約束を返します。呼び出し元オブジェクトとの間の契約であり、将来、呼び出しオブジェクト(ここでは失敗する)は、最終的にはその中で失敗するかどうかは、解決されるか拒否されるかによって異なります。ここ

0

読む程度の約束:$q Module Angular

あなたが非同期的な機能を実行し、その 戻り値(または例外)を使用することができますサービス彼らを:$ qをモジュールのドキュメントを通過しますPromises

処理が完了しました。

したがって、約束は非同期プログラミングで使用されます。 $ qはAngularの約束の実装です。上記関数の

使用:

service.serviceCal(methodName, params) 
.then(function(resolve){ 

    // on successful resolving 
    // called when defer.resolve is called 
    // resolved object: resolve 

}, function(reject){ 

    // on reject 
    // called when defer.reject is called 
    // rejected object: reject 

}) 
0

コードは$httpを呼び出した結果に推奨された方法を使用しています。 $httpは約束を返しますが、通常の約束の構造ではうまく機能しないいくつかの追加のメソッド.success.errorがあります。

$q.defer()は、関数から返される約束を作成し、このコードは約束を解決するためにsuccesserrorを使用します。このコードを書くより簡単な方法は、$httpとその.thenメソッドによって返された約束を使用することです。

service.serviceCall = function (methodName, params) { 
    return $http({ method: "POST", url: url + methodName, data: params, headers: headers }) 
    .then(function successFn (response) { 
     return response.data; 
    }); 
} 

これは、元のコードと同じ効果を有している:それは応答からのデータに解決される、またはエラーが発生した場合に約束が拒否されるか約束を返します。

関連する問題