4

我尝试使用 requirejs 和异步插件加载适用于 JavaScript 的 Google API 客户端库:

require.config({
    paths : {
        async : '../lib/requirejs/async'
    },
    waitSeconds: 60
});

define('gapi', ['async!https://apis.google.com/js/client.js!callback'],
    function(){
        console.log('gapi loaded');
        return gapi.client;
    }
);

require(['gapi'], function(){
    console.log("Callback");
    console.log(gapi);
});

加载这个库的常用方法是

<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

一切都在不到 2 秒的时间内加载,但我总是收到此错误:

Uncaught Error: Load timeout for modules: async!https://apis.google.com/js/client.js!callback_unnormalized2,async!https://apis.google.com/js/client.js!callback
http://requirejs.org/docs/errors.html#timeout 
4

1 回答 1

8

TL;博士; 更改!callback!onload应该修复超时。

define('gapi', ['async!https://apis.google.com/js/client.js!onload'],
    function(){
        console.log('gapi loaded');
        return gapi.client;
    }
);

之后的值!用作异步回调的参数名称,在这种情况下,加载的 URI 将类似于https://apis.google.com/js/client.js?onload=__async_req_3__where __async_req_3__is a global variable (callback function) 一旦 Google API 被加载(通知插件所有依赖项)满足)。

于 2013-08-06T13:39:25.563 回答