【问题标题】:Check if a javascript has loaded and then call another javascript检查是否已加载 javascript,然后调用另一个 javascript
【发布时间】:2012-07-22 06:06:19
【问题描述】:

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

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

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

【问题讨论】:

  • 你如何获得 JSON ?通常你使用 AJAX 请求,它提供了请求完成时的事件..
  • @GabyakaG.Petrioli 通过 ajax 调用 $.ajax,成功调用函数 A。我希望完成此函数 A,然后我想调用函数 B。
  • +1 给盖比。绝对使用 ajax,它的成功回调,绝对。
  • @Lings,在成功函数的末尾调用下一个..如果你能提供一些源代码,它将有助于更好地描述解决方案..
  • 不就是funcA(); funcB();这么简单吗?如果函数没有执行任何异步操作,则函数调用是顺序的。

标签: javascript html function call


【解决方案1】:

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
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2011-11-12
    相关资源
    最近更新 更多