我有一个 javascript,它从 URL 获取 JSON 数据并将数据加载到页面上,然后我想调用另一个 javascript 来添加幻灯片效果。
有一个更简单的解决方案,即使用 setTimeout。但是这个解决方案并不完整,因为从 URL 获取数据没有固定的时间。每次通话都会有所不同。
因此,我想检查我的第一个 javascript 是否已加载,然后我想调用第二个 javascript。
我有一个 javascript,它从 URL 获取 JSON 数据并将数据加载到页面上,然后我想调用另一个 javascript 来添加幻灯片效果。
有一个更简单的解决方案,即使用 setTimeout。但是这个解决方案并不完整,因为从 URL 获取数据没有固定的时间。每次通话都会有所不同。
因此,我想检查我的第一个 javascript 是否已加载,然后我想调用第二个 javascript。
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
}
});