在以下代码中,我有两个解析器:loggedin
和owner
。
.when('/admin/deals/my-deals', {
templateUrl: 'views/assessment/assessments_my_test.html',
controller: 'DealTestController',
resolve: {
loggedin: checkAdminin,
owner: getOwnerByEmail
}
})
它们并行运行,但是我需要首先等待loggedin
,然后才运行owner
。
如何实现?
答案 0 :(得分:0)
您可以兑现承诺。现在,这些是路由的特殊承诺,我没有设置用于在angularjs中对此进行测试的环境,但它确实可以在普通JavaScript中工作。值得尝试以下方法:
resolve: {
loggedin: checkAdminin.then(getOwnerByEmail)
}
您将不得不以某种方式链接两个诺言,否则它们将异步运行。
答案 1 :(得分:0)
要顺序运行两个异步函数,需要将它们链接在一起:
.when('/admin/deals/my-deals', {
templateUrl: 'views/assessment/assessments_my_test.html',
controller: 'DealTestController',
resolve: {
both: function() {
var result = {};
var promise = checkAdmin();
var p2 = promise.then(function(data) {
result.loggedin = data;
return getOwnerByEmail();
});
var p3 = p2.then(function(data) {
result.owner = data;
return result;
});
return p3;
}
}
})
两个promise都需要在一个复合解析器函数中调用和解析。 both
函数用一个对象解析:
{ loggedin: <data from checkAdmin>,
owner: <data from getOwnerByEmail>
}