首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谷歌SignOut进程错误未捕获错误: nb JS

谷歌SignOut进程错误未捕获错误: nb JS
EN

Stack Overflow用户
提问于 2019-06-30 22:34:59
回答 1查看 694关注 0票数 2

为了使我的代码重构,我编写了如下谷歌SignOut函数

代码语言:javascript
运行
复制
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";
            }
        });
    });
}

但是它会在控制台中给出一个错误,如下所示

代码语言:javascript
运行
复制
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)

但我像这样实现它

代码语言:javascript
运行
复制
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";
                    }
                });
            });
        });
    });
};

虽然它看起来不是很好,但它工作得很好。如果有人能告诉我我之前的实现出了什么问题,有什么不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-01 14:01:50

问题出在这一行gApiAuth.init().then(doGoogleLogout(gApiAuth));上。

对于promise的成功处理程序,您需要传递函数引用,而不是直接调用函数。在这里,doGoogleLogout(gApiAuth)将在promise解析之前被调用。将其更改为gApiAuth.init().then(()=>doGoogleLogout(gApiAuth))

从这个link了解更多信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56825671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档