Ошибка в процессе Google SignOut Uncaught Ошибка: nb JS - PullRequest
0 голосов
/ 30 июня 2019

Просто чтобы сделать рефакторинг моего кода, я написал функцию Google SignOut следующим образом

function googleSignOut() {
    if (typeof module_google_login == 'undefined') {
        return false;
    }
    gapi.load('auth2', function () {
        var gApiAuth = gapi.auth2;
        gApiAuth.init().then(doGoogleLogout(gApiAuth));
    });
};

function doGoogleLogout(gApiAuth) {
    console.log(gApiAuth);
    var googleAuth = gApiAuth.getAuthInstance();
    googleAuth.signOut().then(function () {
        $.ajax({
            type: 'POST',
            url: '/account/logout/',
            success: function () {
                auth2.disconnect();
                window.location = "/account";
            }
        });
    });
}

Но выдает ошибку в консоли, как это

Uncaught Error: nb
    at tE (cb=gapi.loaded_0:201)
    at jF.<anonymous> (cb=gapi.loaded_0:248)
    at new _.C (cb=gapi.loaded_0:123)
    at jF.BT (cb=gapi.loaded_0:248)
    at Ay.Qv.a.<computed> [as signOut] (cb=gapi.loaded_0:227)
    at doGoogleLogout (main.js:48)
    at main.js:41
    at platform.js:18
    at Sa (platform.js:10)
    at Y (platform.js:18)

Но я реализую это так

function googleSignOut() {
    if (typeof module_google_login == 'undefined') {
        return false;
    }
    gapi.load('auth2', function () {
        gapi.auth2.init().then(function () {
            var auth2 = gapi.auth2.getAuthInstance();
            auth2.signOut().then(function () {
                $.ajax({
                    type: 'POST',
                    url: '/account/logout/',
                    success: function () {

                        window.location = "/account";
                    }
                });
            });
        });
    });
};

тогда все работает нормально, хотя выглядит не очень хорошо. Если кто-то может сказать мне, что не так с моей предыдущей реализацией и что это не работает.

1 Ответ

1 голос
/ 01 июля 2019

Проблема с этой строкой gApiAuth.init().then(doGoogleLogout(gApiAuth));.

Для успешного выполнения обещания вам нужно передать функциональную ссылку, а не вызывать функцию напрямую.Здесь doGoogleLogout(gApiAuth) будет вызвано до того, как обещание будет выполнено.Измените это на gApiAuth.init().then(()=>doGoogleLogout(gApiAuth))

Подробнее об этой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...