簡體   English   中英

從服務返回$ http時拒絕承諾

[英]reject promise when returning $http from service

我知道我可以這樣做:

angular.module('app.services').service('Resources', function ($q) {
  this.ProductData = function() {
    var deferred = $q.defer();

    $http.get(url)
        .then(function(result) {
            deferred.resolve(result);
        }, function() {
            defered.reject("error");
        });

    return deferred.promise;
  }
});

但是我可以避免創建延遲的obj,但仍然能夠解析和拒絕嗎?

angular.module('app.services').service('Resources', function () {
  this.ProductData = function() {

    return $http.get(url)
        .then(function (result) {
            // how would I do 'deferred.resolve or deferred.reject' here?
        }, function () {
            // how would I do 'deferred.reject' here?
        });
  }
});

您應該避免為$http創建deferred承諾和另一個保證。

如果在實際的$http調用成功后需要拒絕承諾,則需要返回$q.reject()

return $http.get(url)
    .then(function(result){
       if (result.data.length === 0) return $q.reject("error");

       return result;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM