检查javascript是否已加载,然后调用另一个javascript

时间:2012-07-23 23:41:19

标签: javascript html function call

我有一个javascript从URL获取JSON数据并将数据加载到页面,然后我想调用另一个javascript来添加幻灯片效果。

有一个更简单的解决方案,即使用setTimeout。但是这个解决方案并不完整,因为从URL获取数据没有固定的时间。每次通话都会有所不同。

因此我想检查我的第一个javascript是否已加载,然后我想调用第二个javascript。

1 个答案:

答案 0 :(得分:2)

JavaScript是一种异步语言,或者至少,它的HTTP API(大部分)是异步的。

您不应该使用settimeout,但是您应该使用异步链接来构建因果事件列表。有很多图书馆可供帮助,例如http://www.infoq.com/articles/surviving-asynchronous-programming-in-javascript

如果您要从自己的网站加载内容,那么当JSON最终加载时会有onsuccess / oncomplete事件,您可以为其分配回调。实际调用它取决于你的javascript框架,如果你使用它。

如果您使用名为JSONP的格式从远程站点使用数据,则需要定义回调,它应该是公共函数名称,例如 onMyDataArrived 。你应该在那里添加你的回调代码。有些框架会隐藏这些细节,它们会生成一个随机函数,它们会在数据到达时删除,并提供类似于onSuccess / onComplete的API。

如今,最流行的javascript框架是jQuery,你可以在这里做这些事情,比如:

$.ajax({
    url: 'give_me_my_json.php',
    dataType: 'json', 
    success: function(data){
         //call your second javascript
    }, 
    error: function(){
         //WHOOOPSIE... data could not be loaded
    }
});