gpt4 book ai didi

javascript - 在我的案例中如何解决我的 promise 电话

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

我试图在我的服务中减少我的 promise 对象。我有类似的东西

angular.module('myApp').service('testService', ['Employees','$q',
function(Employees, $q) {
var service = {};
var firstEmp;

var deferred = $q.defer();

Employees.query({
Id: 123
}, function(objects) {
firstEmp = objects[0];
deferred.resolve(objects);
})


service.getFirstEmployee = function() {
var deferredtwo = $q.defer();

// return deferredtwo.promise;
//How to solve the double promise defer in my case
//First promise is wait for the whole employees
//this one is to return first employee
deferred.promise.then(function(){
deferredtwo.resolve(firstEmp);
})
return deferredtwo.promise;
}

return service;
]);

Controller

testService.getFirstEmployee.then(function(firstEmployee){
console.log(firstEmployee) <---show first employee
})

我不确定如何解决双重 promise 对象。谁能帮我?非常感谢!

最佳答案

如果您的最终目标只是获得第一个员工,那么您根本不需要所有这些“双重 promise ”。只需与第一个员工达成一个 promise :

angular.module('myApp').service('testService', ['Employees','$q',
function(Employees, $q) {

var pFirstEmployee = $q(function (resolve) {
Employees.query({ Id: 123 }, function(objects) {
resolve(objects[0]);
});
});

return {
getFirstEmployee: function() {
return pFirstEmployee;
}
};
}
]);

如果您需要两种方法 - 一种为从查询返回的所有员工返回 promise ,另一种仅返回该集合中的第一个员工,只需为所有员工创建一个 promise 并将其链接起来:

angular.module('myApp').service('testService', ['Employees','$q',
function(Employees, $q) {

var pAllEmployees = $q(function (resolve) {
Employees.query({ Id: 123 }, resolve);
}),
pFirstEmployee = pAllEmployees.then(function (employees) {
return employees[0];
});

return {
getAllEmployees: function() {
return pAllEmployees;
},
getFirstEmployee: function() {
return pFirstEmployee;
}
};
}
]);

关于javascript - 在我的案例中如何解决我的 promise 电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29171286/

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