Цель состоит в том, чтобы вернуть логическое значение, определяющее, можно ли разместить вакансию на основе заработанного персонала.Существуют разные части, которые приходят из трех разных таблиц SQL.Вместо того чтобы делать SQL-запрос, который возвращает все из них в одном результате, я пытаюсь понять, как использовать функцию $ q.all.Проблема в том, что я не получаю обещание от службы.Ошибка: TypeError: Невозможно прочитать свойство 'then' с неопределенным значением
. Есть несколько статей на эту тему, но большинство из найденных мною старых и по-прежнему ссылаются на использование defer.Я попробовал предложения в других, и ни одно из них не сработало.Они упомянули, что $ q.all нужен возврат, и чтобы вернуть возвращаемые значения $ q.resolve и $ q.reject.
Вот код в моем сервисе:
function isMDOLevelAllowed(mdoLevel, finance) {
this.crData = "";
this.pData = "";
var mdoLevelToMatch = "", mdoMatrix = "", mdoOnRollsTotal = 0, mdoAuthTotal = 0;
var mdoVarianceTotal = 0, mdoPending = 0, mdoPendingThisLevel = 0;
return $q.all([
getCRO36ByFinance(finance),
epEarnedMDOSDOResource(finance),
getPendingByFinance(finance)
]).then(function (data) {
var crData = data[0];
var eData = data[1];
var pData = data[2];
var mdoData = crData.filter(function (m) { return m.jobType === "MDO"; });
mdoLevelToMatch = mdoData.filter(function (m) { return m.payGrade === mdoLevel; })[0];
mdoVarianceTotal = mdoData.reduce(function (a, b) { return a + b.variance; }, 0);
mdoMatrix = mdoData.map(function (m) { return { payGrade: m.payGrade, authorized: m.totalAuthorized }; });
mdoPending = pData.mdoTotalCount;
mdoPendingThisLevel = eval("pData.mdO" + mdoLevelToMatch.payGrade + "Count");
// Check if over Total Authorized
if (mdoVarianceTotal + mdoPending < 0) {
// Check if over Paylevel Authorized
if (mdoLevelToMatch.variance + mdoPendingThisLevel < 0) {
return $q.resolve();
}
else {
return $q.reject();
}
}
else {
return $q.reject();
}
}).$promise;
}
var service = {
getEarnedByFinance: getEarnedByFinance,
getCRO36ByFinance: getCRO36ByFinance,
getPendingByFinance: getPendingByFinance,
isMDOLevelAllowed: isMDOLevelAllowed,
isSDOAllowed: isSDOAllowed
};
return service;