gpt4 book ai didi

javascript - 然后似乎在异步返回值之前触发

转载 作者:行者123 更新时间:2023-12-03 12:37:14 25 4
gpt4 key购买 nike

我收到一个错误,几乎就像我的 .then 在异步调用完成之前触发一样。我意识到我正在循环获取 api 帖子,但我目前只尝试使用数组大小​​为 1 的数组。

服务:

this.saveTags = function (tag) {
$http({
method: "POST",
url: '/api/projects/' + data.Id + '/tags',
data: ({ Name: tag.Name })
}).then(function (response) {
console.log(response.data)
if (typeof response.data === 'object') {
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
}, function (response) {
// something went wrong
return $q.reject(response.data);
});

Controller :

 tags.forEach(function(tag) {
counter++;
data.saveTags(tag).then(function(data) {
console.log(data)
});
});

错误:

enter image description here

最佳答案

您需要从当 $http POST 请求完成时已解决或拒绝的函数返回一个 promise 。

看起来您正在尝试从 $http 函数本身返回 rejectresolve 产品,而您的 saveTags 函数最终不会向其调用者返回任何内容(即,从 forEach 循环)。

试试这个:

this.saveTags = function (tag) {
var deferred = $q.defer();

$http({
method: "POST",
url: '/api/projects/' + data.Id + '/tags',
data: ({ Name: tag.Name })
}).then(function (response) {
console.log(response.data)
if (typeof response.data === 'object') {
deferred.resolve(response.data);
} else {
// invalid response
deferred.reject(response.data)
}
}, function (response) {
// something went wrong
deferred.reject(response.data)
});

return deferred.promise;
}

关于javascript - 然后似乎在异步返回值之前触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683709/

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