Javascript Angularjs ui路由器在路由中解析
你能查一下我的密码吗Javascript Angularjs ui路由器在路由中解析,javascript,angularjs,angular-ui-router,angular-promise,resolve,Javascript,Angularjs,Angular Ui Router,Angular Promise,Resolve,你能查一下我的密码吗 .state('addNewGroup', { url: '/group/new', resolve:{ "checkPermission": function ($state, checkPermission) { checkPermission.checkPermission() .then(function (result) { if
.state('addNewGroup', {
url: '/group/new',
resolve:{
"checkPermission": function ($state, checkPermission) {
checkPermission.checkPermission()
.then(function (result) {
if (result) {
alert('Hello');
} else {
alert('access denied');
}
})
},
"otherStuff": function () {
console.log("Should execute only if result in 'checkPremission' is true");
}
},
});
问题
我在路由配置中有两个承诺。
是否有可能只解决具体的承诺?
假设我有5个承诺要解决,我只想在“checkPremission”为真的情况下解决它们。在其他情况下,我不想解决所有问题。
是否可能,或者我应该使用不同的逻辑。这里的主要问题是,当您编写这样的代码时,我认为所有函数(在键之后)都是异步执行的。但正如我所看到的(如果是真的),你必须等待结果来决定下一步行动。那么,为什么不把代码(可能是if-else)放在promise的successful和failed函数中决定调用哪些函数。您可以将下一个promise作为依赖项注入,使其等待上一个promise:
resolve: {
firstResolve: function() {
return 'A result';
},
nextResolve: function(firstResolve) {
// firstResolve has the value 'A result' here
}
}
从技术上讲,第二个解决方案将执行,但您可以根据第一个解决方案的结果建立逻辑。我完全忘记了这一点。谢谢,先生。