Aurelia - запросить веб-сервис в стадии разработки - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь настроить шаг конвейера «управление ролями», где мне нужно запросить веб-сервис.Теперь моя проблема в том, что 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 голосов
/ 25 сентября 2018

Большое спасибо.Я мог бы решить эту проблему сейчас, изменив метод на асинхронный метод:

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();
    }
0 голосов
/ 25 сентября 2018

Просто верните Promise из run ()

    return this.roleService.userIsAllowedTo(permission).then(boolResponse => {
                    if(boolResponse){
                        return next();
                    }else{
                        return next.cancel(new Redirect("/"));
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...