i具有一个angularJS函数,可以从数据库中获取一些数据。根据数据填充到数据库的方式,我不会立即获得一些我要寻找的数据(我确实在原始调用的一两个或两个之内将数据恢复了)。我想做的是检查数据库中返回的结果,如果某些类型还没有,则"推动另一个承诺",以再次从数据库中获取数据。这是我到目前为止的功能:
function getResponses(ids,user) {
var deferred = $q.defer();
var promises = [];
var idsString = "";
angular.forEach(ids, function (id) {
idsString += "," + id;
});
idsString = idsString.substring(1);
//Get Response calls retrieves the data from the database
promises.push(getResponse(idsString, user));
$q.all(promises).then(function(results) {
deferred.resolve(results);
});
return deferred.promise;
}
到目前为止,我最大的问题是我将"检查结果"部分放在哪里?我认为它会进入$q。所有块,但是我需要先从数据库中解析结果,或者我只需检查数据库的结果,如果它们包含所有必要的类型,请解决它然后?如果没有解决,只需继续以$ $间隔推动GetResponse Promise,直到所需的结果返回?
?我甚至要求什么?
谢谢
无需用$q.defer
制造承诺,因为$q.all
已经返回承诺:
function getResponses(ids,user) {
//var deferred = $q.defer();
var promises = [];
var idsString = "";
angular.forEach(ids, function (id) {
idsString += "," + id;
});
idsString = idsString.substring(1);
//Get Response calls retrieves the data from the database
promises.push(getResponse(idsString, user));
/* NOT needed
$q.all(promises).then(function(results) {
deferred.resolve(results);
});
return deferred.promise;
*/
//INSTEAD return promise from $q.all
return $q.all(promises);
}