Проблема с областью: перемещенная функция теперь не находит переменную - PullRequest
0 голосов
/ 20 января 2019

Я работаю над гибридным приложением (только для себя) с Framework7, и почти все работает нормально.Я хочу привести в порядок код и переместить некоторый повторяющийся код в функцию.Но теперь я получаю сообщение об ошибке

ReferenceError: Не могу найти переменную: resol

Я только изучаю JS, и последние пару дней я узнал больше о области действия и контексте, но не могувыяснить, почему я получаю эту ошибку.Как я понимаю, поскольку функция обратного вызова resol () определена во внешней области, я должен иметь возможность вызывать ее из своей пользовательской функции?

Когда я помещаю app.request (), где моя функция getJson ()это работает.Тем не менее, запрос все еще работает из getJson (), и я вижу, что данные зарегистрированы, но функция разрешения не будет работать должным образом.

routes = [
    {
        path: '/person/abc/',
        async: function (routeTo, routeFrom, resolve, reject) {
            var router = this;
            var app = router.app;
            var jwt = store.get('jwt');
            app.preloader.show();
            getJson(
                jwt,
                {document:'person'},
                'Test',
                '-/-'
            );

        },
    },
];


function getJson(jwt, data, title, note) {
    app.request({
        url:            'https://example.com/json/',
        method:         'GET',
        dataType:       'json',
        crossDomain:    true,
        data:           { data },
        headers:        { Authorization: 'Bearer ' + jwt },
        success: function(data, textStatus){
            if (data.status === 'ALLOW') {
                console.log('Data received');
                resolve(
                    {
                        componentUrl: './pages/person.html',
                    },
                    {
                        context: {
                            title: title, note: note, person: data.person,
                        }
                    }
                );
            } else {
                app.dialog.alert('Error loading data');
            }
            app.preloader.hide();
            return;
        },
        error: function(xhr, textStatus, errorThrown){
            console.log('Error', xhr.response);
            app.preloader.hide();
            app.dialog.alert('Error on request');
            return;
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...