gpt4 book ai didi

javascript - AngularJS 中的 Defer 和 Promise 无法正常工作

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

我现在在 AngularJS 中遇到了 defer Promise 的问题。

这是我的代码:

var defer = $q.defer();

defer.promise
//First Execution
.then(function () {
TestService.GetSchoolYear().then(function (results) {
$scope.schoolYears = results.data;
$scope.schoolYear = results.data[0].schlYearName;
});
})
//Second Execution
.then(function () {
TestService.GetAffiliation().then(function (results) {
$scope.affiliation = results.data;
$scope.school = results.data[0].affiliation;
});
})
//Third Execution
.then(function () {
TestService.GetDepartment().then(function (results) {
$scope.departments = results.data;
$scope.department = results.data[0].depName;
$scope.depCode = results.data[0].depCode;
});
})
//Fourth Execution
.then(function () {
TestService.GetYearLevel2($scope.depCode).then(function (results) {
$scope.yearLevels2 = results.data;
$scope.yearLevel2 = results.data[0].yearName;
});
});
defer.resolve();

所有的执行都按顺序进行。但延迟在不同的函数中执行,不按顺序执行。

我的代码有什么问题吗?有什么问题吗?

我在这里得到了这个引用: https://thinkster.io/egghead/promises/

我的代码是否缺少某些内容?我想要的只是按顺序执行函数,因为其他函数需要一些数据。

谢谢。

最佳答案

由于 TestService 的各种函数似乎返回一个 promise ,因此您甚至不需要这里的 $q.defer - 事实上,这将是 deferred anti-pattern

只需将它们链接在一起并返回结果:

return TestService.GetSchoolYear()
.then(function (results) {
$scope.schoolYears = results.data;
$scope.schoolYear = results.data[0].schlYearName;

return TestService.GetAffiliation();
})
.then(function (results) {
$scope.affiliation = results.data;
$scope.school = results.data[0].affiliation;

return TestService.GetDepartment();
})
.then(function (results) {
$scope.departments = results.data;
$scope.department = results.data[0].depName;
$scope.depCode = results.data[0].depCode;

return TestService.GetYearLevel2($scope.depCode);
})
.then(function (results) {
$scope.yearLevels2 = results.data;
$scope.yearLevel2 = results.data[0].yearName;
return results;
});

关于javascript - AngularJS 中的 Defer 和 Promise 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28167351/

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