【发布时间】:2021-03-19 16:58:10
【问题描述】:
我有一个common service.js,它具有通用功能,但我正在使用和创建的功能如下:
this.createFastlookupDictionaryForEmployee = function (data) {
--code to build dictionary
return dictionaryArr;
}
this.getEmployeeId = function (dictionaryArr,employeeId) {
return dictionaryArr[employeeId].
}
控制器:
function onPageLoad(Callback1,
Callback2,
Callback3) {
myService.getEmloyeeList().success(function (data) {
$scope.employeeLookupList = commonService.createFastlookupDictionaryForEmployee(data.items);
Callback1();
Callback2();
}).finally(function () {
});
}
$scope.getEmployeeId = function () { //callback function 1
myService.getEmployeeData().success(function (data) {
var employeeId = $scope.employeeLookupList[10]; //error here as the $scope.employeeLookupList is not populated yet
}).finally(function () {
});
};
所有回调函数都在访问来自$scope.employeeLookupList 数组对象的数据。现在的问题是由于getEmloyeeList API 调用返回大量数据,这就是为什么构建字典需要时间,回调函数调用已完成,因此无法读取某些员工 ID。
我无法将回调传递给createFastlookupDictionaryForEmployee 方法,因为它在很多地方都被使用。
我如何确保字典已创建并且只有在此之后我的 Callback1, Callback2 才会被调用?
我不想在填充字典之前调用 Callback1 和 Callback2。
【问题讨论】:
标签: javascript angularjs callback