这里的问题是,如果我将其作为普通函数运行,则loadAllUsers()
(对nodejs控制器的http调用)不会完成,并且不会有数据。哪种原因会导致self.tenants.filter
function findTenants ($scope, $mdDialog) {
var self = this;
try {
self.searchText = "aa"
self.tenants = loadAllUsers();
self.querySearch = querySearch;
}
catch(err) {
console.error(err);
}
function querySearch (query) {
return query ? self.tenants.filter( createFilterFor(query) ) : self.tenants;
}
function createFilterFor(query) {
var lowercaseQuery = angular.lowercase(query);
return function filterFn(tenants) {
return (tenants.value.indexOf(lowercaseQuery) === 0);
};
}
}
由于loadAllUsers()
已经是一个承诺,我不妨让findTenants
成为异步函数,所以我可以等待结果。
async function findTenants ($scope, $mdDialog) {
var self = this;
try {
self.searchText = "aa"
self.tenants = await loadAllUsers();
self.querySearch = querySearch;
}
etc....
现在它等待数据,数据实际到达并放入self.tenants
这很好......但是我得到了这个:
您会认为此错误来自loadAllUsers()
承诺,但事实并非如此。因为即使我发表评论loadAllUsers()
我仍然会收到错误。所以我可能会使用mdDialog
或Angular Material来抛出错误。
只要我将function findTenants
更改为async function findTenants
,我就会收到错误。
有什么建议吗?还有另一种等待loadAllUsers()
的方法吗?