我正在尝试使用带有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){
});
在这种情况下我该怎么做?
答案 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)