Async,Await,角度控制器中的Promise无法读取属性"然后"未定义的。

时间:2017-07-18 11:51:59

标签: angularjs promise

这里的问题是,如果我将其作为普通函数运行,则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这很好......但是我得到了这个:

enter image description here

您会认为此错误来自loadAllUsers()承诺,但事实并非如此。因为即使我发表评论loadAllUsers()我仍然会收到错误。所以我可能会使用mdDialog或Angular Material来抛出错误。

只要我将function findTenants更改为async function findTenants,我就会收到错误。

有什么建议吗?还有另一种等待loadAllUsers()的方法吗?

0 个答案:

没有答案