gpt4 book ai didi

javascript - 在 Promise 中操作数据并在服务函数中返回它 - AngularJS

转载 作者:行者123 更新时间:2023-11-30 11:53:01 24 4
gpt4 key购买 nike

我遇到了无法将服务返回值分配给变量的问题。我有两个 Controller (AddProject 和 EditProject),这个函数在它们两个中,我想提供一个服务来避免重复代码。

        ... 
.service("UserService", function($http) {
var allUsers;
var usersPromise = $http.get("/users");
usersPromise.then(
function(response) {
allUsers = response.data.map(function(user) {
user._lowername = user.name.toLowerCase();
return user;
});
console.log(allUsers) //It prints the object array
return allUsers;
},
function(error) {
console.log(error);
return error;
});

this.AllUsers = function() {
return allUsers;
}
})

在我的 Controller 中我有一个变量:(假设已完成所有需要的注入(inject))

self.AllUsers = UserService.AllUsers(); //it is undefined

我尝试使用 $q 但它也未定义。

最佳答案

使用 promises 的主要原因是处理异步调用(比如你 $http.get() ),但你似乎试图以同步方式使用它。你的服务应该只返回 promise ,然后你的 Controller 应该调用它并在它解析时做它需要做的事情:

.service("UserService", function($http) {
var allUsers;
var usersPromise = $http.get("/users");
usersPromise.then(
function(response) {
allUsers = response.data.map(function(user) {
user._lowername = user.name.toLowerCase();
return user;
});
console.log(allUsers) //It prints the object array
return allUsers;
},
function(error) {
console.log(error);
return error;
});

this.AllUsers = function() {
return usersPromise;
};
});

....

UserService.AllUsers().then(function(users) {
self.AllUsers = users;
});

关于javascript - 在 Promise 中操作数据并在服务函数中返回它 - AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38917711/

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