gpt4 book ai didi

javascript - 如何延迟$httprequest?

转载 作者:行者123 更新时间:2023-12-01 02:33:35 25 4
gpt4 key购买 nike

我试图像这样延迟我的 $http 调用:

 githubService.getUserEvents = function getUserEvents() {
return $timeout(
$http.get(ANGULAR_EVENTS).then(function (eventsData) {
return _.map(eventsData.data, function (data) {
return {
type: data.type,
user: data.actor.login,
avatarUrl: data.actor.avatar_url,
createdOn: data.created_at,
repo: data.repo.name
};
});
}),
5000);
};

当我运行此命令时,它似乎没有执行延迟的请求,并且我在 chromeconsole 中看不到任何错误?另请参阅此处 jsbin

如何在不使用拦截器的情况下调用延迟的 $http 请求?

jsbin

最佳答案

删除的答案有这个权利,我认为,您确实需要延迟,因为您无法从 $timeout 返回,也正如评论指出需要注入(inject) $timeout 服务。

githubService.getUserEvents = function getUserEvents() {
var deferred = $q.defer();
$timeout(
function(){
$http.get(ANGULAR_EVENTS).then(function (eventsData) {

deferred.resolve(_.map(eventsData.data, function (data) {
return {
type: data.type,
user: data.actor.login,
avatarUrl: data.actor.avatar_url,
createdOn: data.created_at,
repo: data.repo.name
};
}));
})

},2000);
return deferred.promise;

};

看起来我超出了这里的公共(public) API 限制,但应该可以工作。

<小时/>

编辑每个评论尝试只返回 $timeout promise ,它似乎在这里工作(当我昨天第一次尝试时,即使在修复 $timeout 之后,似乎也不起作用,所以不确定出了什么问题,但这里的功能在没有制作一个额外的延迟对象)

githubService.getUserEvents = function getUserEvents() {

return $timeout(function(){
return $http.get(ANGULAR_EVENTS).then(function (eventsData) {

return _.map(eventsData.data, function (data) {
return {
type: data.type,
user: data.actor.login,
avatarUrl: data.actor.avatar_url,
createdOn: data.created_at,
repo: data.repo.name
};
});
})

},2000);
};

我仍然必须在评论中坚持我的观点。只要你意识到自己的延迟会产生一些开销,并且你在不经历整个 promise 链的情况下解决任何问题,那么我不认为第一种方法有问题(而且我发现它更容易理解) )。然而,只是为了澄清, $timeout promise 确实用它触发的函数返回的值来解决(这是有道理的,但文档听起来好像 $timeout 在函数触发时解决,而不是在函数完成时解决......没有'虽然tbh)没有到达文档的返回部分。

关于javascript - 如何延迟$httprequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48123260/

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