0

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

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

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

4

1 回答 1

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
    }
});
于 2012-07-23T23:52:10.097 回答