则未定义函数
then function is not defined
我有一个函数来获取当前公司代码,我需要将其存储在本地存储上,并在其余的API调用中使用它。 因此,在未检索到此公司代码的值之前,我不应进行 API 调用。这就是我获取公司代码的方式
currentDivision = function() {
var q = $q.defer();
var division = window.localStorage.getItem("CurrentDivision");
if(division){
return q.resolve(division);
}
else{
var url = this.fooApi + "current/Me?$select=CurrentDivision";
$http.get(url)
.success(function(data) {
division = data.d.results[0].CurrentDivision;
window.localStorage.setItem("CurrentDivision", division);
return q.resolve(division);
})
}
return q.promise;
}
这就是我在确保成功检索当前除法后尝试调用其余 API 调用的方式:
$scope.openModal = function() {
$scope.modal.show().then(function() {
currentDivision().then(function(){
fooServices.getData().then(function() {
$scope.closeModal();
}, function(reason) {
// handle the error
$scope.showAlert(reason);
$scope.closeModal();
})
});
})
}
但是当我尝试这样做时,我收到以下错误消息:类型错误:无法读取未定义的属性"then"
您应该始终返回q.promise
。取出以下return
:
if (division) {
return q.resolve(division);
}
即:
var q = $q.defer();
// ...
if (division) {
q.resolve(division);
} else {
//...
}
return q.promise;
通过这种方式,您返回已经解决的承诺,这会立即调用then
。
试试这个:
if (division) {
return $q.when(division);
}
并改进您的代码:
currentDivision = function () {
if (division) {
return $q.when(division);
}
var url = this.fooApi + "current/Me?$select=CurrentDivision";
return $http.get(url).then(function (data) {
division = data.d.results[0].CurrentDivision;
window.localStorage.setItem("CurrentDivision", division);
return division;
});
}
相关文章:
- 现有函数未定义
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- AngularJS ng repeat显示原型函数未定义
- jQuery onclick 函数:未定义不是一个函数
- 函数未定义
- 为什么在jsfiddle中显示ReferenceError:函数未定义
- 函数未定义,实际定义时为
- 函数未定义的Javascript(Basic)
- ajax函数未定义
- 为什么window.onload函数未定义
- 模块模式:函数未定义
- 包含的javascript源代码通过PHP,onmousemove事件,函数未定义
- 单击链接时出现函数未定义错误
- AngularJS和Angular Snap:SSnap构造函数未定义
- 在Node.js中,从同一文件中的另一个函数引用一个函数会导致'ReferenceError:-函数-未定义
- symfony trick javascript函数未定义
- 不断获取JS函数未定义错误
- AngularJS HTTP 资源 - 响应函数未定义
- 函数未定义,参数格式
- JavaScript 中的函数未定义