在调用函数之前加载内容

时间:2014-03-10 15:05:44

标签: javascript loading html5-audio

我刚刚开始在异步编程中练习代码。我有点困惑,为什么我无法使应用程序正常工作。

我试图在var jsonItems中加载json数据。 加载声音,然后播放。

function getJItems(jsonItems, callback){

$.getJSON( "data.json", function( data ) {
    jsonItems.push(data);

});

    callback(jsonItems);    
}

var sI = [];

function loadSoundJson(jsonItems){

    for (it =0 ; it < jsonItems[0].length ; it++){
        sI[it] = new buzz.sound( "data/"+jsonItems[0][it].filesound, { formats: [ "ogg", "mp3"] });
    }

};

这就是我试图打电话的方式。

$( document ).ready(function() {


    getJItems(jsonItems,loadSoundJson);

});

我得到的错误是:jsonItems [0]未定义

如果我写,工作正常。

$( document ).ready(function() {


    getJItems(jsonItems);
        window.alert("forced pause");
        loadSoundJson(jsonItems);

});

所以,我只想确保在应用程序启动之前加载并准备好整个内容(图像,声音,数据)。

也许我想要的是,知道如何实现正确的方法来制作一个好的加载页面。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

function getJItems(jsonItems, callback){

   $.getJSON( "data.json", function( data ) {
      jsonItems.push(data);
      callback(jsonItems); 
   });


}

你没有在适当的时候打电话给回叫。 getJSON是异步的,因此当数据可用时,它们将被推送到jsonItems。在任何数据可用之前,首先执行callback(jsonItems);

你在第一时间做的是执行getJItems()做一个ajax调用(无需等待回复)调用回调