gpt4 book ai didi

javascript - 根据结果​​重复 Angular promise ?

转载 作者:行者123 更新时间:2023-11-28 04:59:07 24 4
gpt4 key购买 nike

我有一个 AngularJS 函数,可以从数据库中获取一些数据。根据数据填充到数据库的方式,我不会立即获得我正在寻找的一些数据(我确实会在原始调用的一两秒内返回数据)。我想做的是检查从数据库返回的结果,如果某种类型还不存在,则“推送另一个 promise ”,再次从数据库获取数据。这是到目前为止我的功能:

         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.all block ,但是我需要首先解析数据库的结果,还是只检查数据库的结果,如果它们包含所有必要的类型,请解析它然后?如果没有解决,只需在 $interval 内继续推送 getResponse promise ,直到返回所需的结果?

我所要求的可能吗?

谢谢

最佳答案

不需要使用 $q.defer 创建 Promise,因为 $q.all 已经返回了一个 Promise:

 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);
}

关于javascript - 根据结果​​重复 Angular promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com