Parse.Promise和angluarjs $ q承诺

时间:2015-06-09 06:33:39

标签: javascript angularjs parse-platform angular-promise

我正在尝试使用带有angularjs的Parse sdk,在使用parse和angular.js中的promises实现时,我对处理promises有点困惑

Parse promise提供了一种方法无法捕获错误,因为angularjs为我们提供了catch。所以说如果我在Parse promise对象中并且必须返回说angularjs承诺,反之亦然。它不会让我猜其中的失败方法

ParsePromise().then(function(){
  return angularPromise();
}).fail(function (error){

});

AngularPromise().then(function(){
  return ParsePromise();
}).catch(function (error){

});

在这种情况下我该怎么做?

2 个答案:

答案 0 :(得分:1)

我建议使用$ q。只需在有角度的$ q承诺中包装解析承诺。然后只使用angularjs承诺处理。

  findByIdsInParse = function(arr) {
            var ParseObject = ParseService.Object.extend('ParseObject');
            var deffered = $q.defer();
            var query = new ParseService.Query(ParseObject);
            query.containedIn('objectId', arr);
            query.find({
                success: function(data) {
                    deffered.resolve(data);
                },
                error: function(error) {
                    deffered.reject(error);
                }
            });

            return deffered.promise;
        };

答案 1 :(得分:0)

我们可以将解析函数包装到return $q((resolve,reject)=>{})中,然后可以在所有$ q函数中使用它们。像这样:

findTransactionById(id){
  return $q((resolve,reject) => {
    //... set up variables, queries ...
    query.find().then(resolve,reject)
  })
}

//we can then use them in all $q functions
findTransactionById(12).
  then(console.log)

let promises = [findTransactionById(10),findTransactionById(9)]
$q.all(promises)
  .then((values) => {
    return findTransactionById(999)
  })
  .catch(console.error)