gpt4 book ai didi

javascript - Angular 服务的返回 promise

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

我有一项服务(当一切都说完了)更新数据库上的值。

我想根据结果(成功/失败)更新 View 范围,但当然服务使用的http请求是异步的,因此返回值不会立即可用,并且在 Controller 中未定义。

如果我在 Controller 内发出http请求,我会更新回调函数内的范围,但因为我使用服务,所以范围的嗯...范围(?)对其不可用。

我认为 Promise 是我需要返回的,但也许有更简单的东西。

服务

.service('doStuff',function($http){

this.update = function(data) {

$http.post('http://api.internet', data).then(function(res){

return(res.data.result);

});

}

})

Controller

/* service is injected into controller etc. */

var result = doStuff.update(data);

p(result); // undefined (as expected)

我想既然我从http回调返回,它会在返回之前等待结果可用,但我猜我错过了一些东西。

最佳答案

由于 $http 始终是异步的,因此您无法在回调函数中返回任何内容。就等于什么都不归还。

您需要做的是返回 $http Promise,然后在 Controller 中处理回调函数。

服务:

.service('doStuff', function($http) {
this.update = function(data) {
return $http.post('http://api.internet', data);
}
})

Controller :

doStuff.update(data).then(function(result){
p(result);
});

关于javascript - Angular 服务的返回 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41668352/

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