Aurelia-在管道步骤中请求Web服务

时间:2018-09-25 09:43:50

标签: typescript httpclient aurelia

我正在尝试设置一个管道步骤“角色管理”,在该步骤中我需要请求网络服务。现在我的问题是,http请求是异步的,因此重定向从未正确触发。

 run(routingContext, next){
        if (routingContext.getAllInstructions().some(i => i.config.permission)) {

            let permission = routingContext.getAllInstructions()[0].config.permission;
            this.roleService.userIsAllowedTo(permission)
                .then(boolResponse => {
                    if(boolResponse){
                        return next();
                    }else{
                        return next.cancel(new Redirect("/"));
                    }
                });
        }
        return next();
    }

有人可以告诉我如何解决吗?

2 个答案:

答案 0 :(得分:1)

只需从run()返回Promise

    return this.roleService.userIsAllowedTo(permission).then(boolResponse => {
                    if(boolResponse){
                        return next();
                    }else{
                        return next.cancel(new Redirect("/"));
                    }
                });

答案 1 :(得分:1)

非常感谢。我现在可以通过将方法更改为异步方法来解决该问题:

async run(routingContext, next){
        if (routingContext.getAllInstructions().some(i => i.config.permission)) {

            let permission = routingContext.getAllInstructions()[0].config.permission;
            let isallowed  = await this.roleService.userIsAllowedTo(permission);
            if(isallowed){
                return next();
            }else{
                return next.cancel();
            }
        }
        return next();
    }