是否有一种更清洁的方式来使用角度返回承诺的承诺

时间:2014-12-11 17:33:20

标签: angularjs promise

我的项目中有以下代码,我希望它有效。

var retrieveUpdates = function (hash) {
    myFunction(data)
      .then(function(filters){
        return Restangular.all('retrieveUpdates').post({ filters });
    });
};

但当然这会失败,因为在此之前会发生回归。我可以修理"它似乎很难看(特别是当这种情况到处都是这样的时候)。

var retrieveUpdates = function (hash) {
    var defer = $q.defer();
    myFunction(data)
      .then(function(filters){
        Restangular.all('retrieveUpdates').post({ filters }).then(defer.resolve, defer.reject);
      });
    return defer.promise;
};

有更简洁的方法吗?

3 个答案:

答案 0 :(得分:3)

您在第一个示例中没有返回任何内容,只需返回myFunction

即可
var retrieveUpdates = function (hash) {
    return myFunction(data)
      .then(function(filters){
        return Restangular.all('retrieveUpdates').post({ filters });
    });
};

答案 1 :(得分:0)

var retrieveUpdates = function (hash) {
    return $q(function(resolve, reject){
        myFunction(data)
          .then(function(filters){
              return Restangular.all('retrieveUpdates').post({ filters }).then(resolve, reject);
           });
    });     
};

答案 2 :(得分:0)

你试过吗

var retrieveUpdates = function (hash) {
    return myFunction(data)
      .then(function(filters){
         return Restangular.all('retrieveUpdates').post({ filters });
      });
 };

这是承诺的共同模式,承诺,总是返回承诺