gpt4 book ai didi

AngularJs promise 中的 promise

转载 作者:行者123 更新时间:2023-12-03 08:24:09 24 4
gpt4 key购买 nike

大家好,我正在将一些数据发布到服务器,然后基于几个变量再次发布到循环内的不同 url。

到目前为止,我使用的例子是:

    $scope.items = [{'name':'Test1','hasd':1,'hase':1},{'name':'Test2','hasd':0,'hase':1}];
var promises = [];

angular.forEach($scope.items,function(obj) {
promises.push($http({
type:'post',
url:'test',
data:obj
}).then(function(response) {
if(response.status==201) {
//do another http call
if(obj.hasd==1) {
$http({}).then(function() {
var something=1;
});
}
}
}));

$q.all(promises).then(function(){
alert('done');
});

我遇到的问题是它只查看初始 $http 调用的 promise ,而不是任何内部调用。有没有办法将所有 $http 调用添加到循环内的 promise 中?

干杯,本

最佳答案

尝试改变这个:

$http({}).then(function() { 
var something=1;
});

收件人:

return $http({}).then(function() { 
var something=1;
});

这意味着您添加到 promises 数组的“外部” promise 在“内部” promise 完成之前不会被解析。

这样做的原因是 then 处理程序可以返回一个值或另一个 promise 。要理解这一点,您需要了解所有 then 处理程序都会创建一个新的 promise 。所以最后总会有一个悬而未决的 promise ,没人在意。

如果您的 then 处理程序没有返回任何内容,那么 Javascript 将(某种程度上)为您返回 undefined。因此,由您的 then 处理程序创建的 promise 将立即使用您返回的值进行解析,或者如果您没有返回任何内容,则为 undefined 。但是您也可以返回一个新的 promise ,它会传回您的 promises 数组。

关于AngularJs promise 中的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448081/

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