Google platform.js 有时不会触发 onload 回调

Ted*_*ler 4 javascript google-oauth

如果我按特定顺序加载其他 javascript 源,以下将不会调用 platform_callback。

<script type="text/javascript" src="//apis.google.com/js/platform.js?onload=platform_callback" async defer></script> 
<script>
    function platform_callback() {
        console.log("callback");
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我很难复制这个......但是如果我有很多 js 库(angular、moment、bootstrap)在平台被调用后加载,则 onload 回调不会触发。

这是一个 gif,显示 console.log 在刷新大约十几次后仅在某些时候触发:https : //i.imgur.com/C5FFJhb.gif

此 html 导致问题:

<script src="https://apis.google.com/js/platform.js?onload=platform_callback" async defer></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular-animate.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular-route.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular-sanitize.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js" crossorigin="anonymous"></script>
<script>
    function platform_callback() {
        console.log("init");
        gapi.load('auth2', function() {
            console.log("auth2");
        });
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Dav*_*idC 6

加载 google 库,然后调用 platform_callback,如果浏览器忙于加载其他 js 文件,则可能不会在当时定义。