定义一个NavigationInstruction,等待promise返回
Define an NavigationInstruction that waits until a promise returns
我们如何定义一个NavigationInstruction等待,直到承诺返回?
let loginRedirectRoute: RouteConfig = {
name: "openIdRedirectRoute",
navigationStrategy: (instruction: NavigationInstruction) => {
this.loginRedirectHandler().then(() => {
instruction.config.moduleId = openIdConfiguration.LoginRedirectModuleId;
}).catch((err) => {
console.error(err.message);
});
},
route: this.getPath(openIdConfiguration.UserManagerSettings.redirect_uri),
};
上面的不起作用。只有当我们调用指令。config. moduleid…同步。
换句话说,我们需要一个导航策略,在promise返回后做一些事情。
这可能吗?如何?
你的内部函数没有返回Promise。试着
this.loginRedirectHandler().then(() => {
return instruction.config.moduleId = openIdConfiguration.LoginRedirectModuleId;
}).catch((err) => {
console.error(err.message);
});
记住
-
.then(() => { return do_this(); })
链一个承诺, -
.then(() => do_this());
链承诺, -
.then(() => { do_this(); })
does NOT.
var foo = 0;
function do_this(bar) {
console.log("call " + foo + " passed " + bar);
foo++;
bar++;
return bar;
}
var promise = new Promise(function(resolve, reject) {
window.setTimeout(() => {
resolve(0);
}, 500);
});
promise
.then((bar) => { return do_this(bar); }) /* 1 */
.then((bar) => do_this(bar)) /* 2 */
.then((bar) => { do_this(bar); }) /* 3 */
.then((bar) => do_this(bar)); /* undefined */
相关文章:
- 等待's返回Promise而不是value
- 正在等待bluebird promise内部的可选流程操作
- 使用jQuery并行执行多个promise后等待完成
- 等待promise解析后再执行代码
- 如何使EXPECT条件等待promise被解析(代码封装在方法中)
- 在promise链中等待DOM元素中的突变
- 在循环中使用 q promise 的最佳方法是什么?等待链完成,然后再迭代到下一个
- 在返回结果之前,我如何等待 jQuery.ajaxComplete in promise.done
- 使用 promise 等待数据库操作
- JQuery Promise:fail()在未等待Promise解析的情况下被调用
- defer.promise 不等待对象解析
- 如何创建一个返回等待EventEmitter的promise的函数
- 生成器在等待promise解析时返回未定义的值
- Angular -等待promise和onload方法被完成
- 在下一次循环迭代之前等待promise结果
- 如何让Node在无限while循环中等待promise完成
- 定义一个NavigationInstruction,等待promise返回
- angular1:如何在父控制器中等待promise解析
- Angular的路由解析不等待promise
- 等待promise和nested then完成