从breeze控制器获取数据后,我收到以下异常。
TypeError:无法获取未定义或空引用的属性'then'
这是我的代码:
Student.js
function fetchUsers()
{
return repository.GetAllUsers().then(function querySucceeded(data) {
// Looks like the problem with the above 'then'
vm.allUsers = data;
return vm.allUsers;
});
}
repository.js:
function GetAllUsers()
{
var query = EntityQuery.from('users');
manager.executeQuery(query).then(querySucceeded, _queryFailed);
function querySucceeded(data) {
log('Retrieved [Lookups]', data, true);
return data.results; //Here I can see the fetched data from breeze controller.
}
}
当我用to$q
替换时,我看到以下异常:
对象不支持属性或方法
to$q
答案 0 :(得分:1)
GetAllUsers
函数在顶层没有return
语句。
如果要返回解析为data.results
的链式保证,请在嵌套层次结构的每个级别包含return
语句。
function GetAllUsers() {
var query = EntityQuery.from('users');
//return derived promise
return (
manager.executeQuery(query)
.then(querySucceeded, _queryFailed)
);
function querySucceeded(data) {
log('Retrieved [Lookups]', data, true);
//return for chaining
return data.results; //Here I can see the fetched data from breeze controller.
};
};
嵌套函数需要每个级别的return
语句。如果没有这个,函数返回null
,导致无法获取属性'然后'未定义或空引用错误。