Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以相同的顺序加载我的播放列表中的JSON项目_Javascript_Jquery_Node.js - Fatal编程技术网

Javascript 以相同的顺序加载我的播放列表中的JSON项目

Javascript 以相同的顺序加载我的播放列表中的JSON项目,javascript,jquery,node.js,Javascript,Jquery,Node.js,我正在用NodeWebKit开发一个小型YouTube应用程序,但我不是JavaScript高手 我有一些来自gdata响应的JSON对象,并且有特定顺序的项目,总是相同的。我可以加载播放列表中的所有内容,但我不能保持与JSON对象相同的顺序 我不理解同步/异步调用 这是我的密码: 如何使用for循环实现这一点,以便以与JSON相同的顺序加载所有项目 函数的顺序如下所示: function searchVideos(user_search){ try{ $('#items

我正在用NodeWebKit开发一个小型YouTube应用程序,但我不是JavaScript高手

我有一些来自
gdata
响应的JSON对象,并且有特定顺序的项目,总是相同的。我可以加载播放列表中的所有内容,但我不能保持与JSON对象相同的顺序

我不理解同步/异步调用

这是我的密码:

如何使用for循环实现这一点,以便以与JSON相同的顺序加载所有项目

函数的顺序如下所示:

function searchVideos(user_search){
    try{
        $('#items_container').empty();
        youtube.feeds.videos({
                q:              ''+user_search+'',
                'start-index' : ''+current_start_index+'',
                'max-results':  25,
                orderby:        'relevance'
            },
            function( err, data ) {
            if( err instanceof Error ) {
                console.log( err )
            } else {
                items=data.items
                current_prev_start_index=current_start_index;
                if (current_page == 1){
                    $('.back').css({'display':'None'});
                } else {
                    $('.back').css({'display':'block'});
                    $('.next').css({'display':'block'});
                }
                if (items.length < 25) {
                    $('.next').css({'display':'None'});
                }
                for(var i=0; i<items.length; i++) {
                    video_loaded = false;
                    truc = function() { getVideoInfos('http://www.youtube.com/watch?v='+items[i].id) }(i);
                }
            }
        });
    }catch(err){
        console.log('searchVideos err: '+err)
    }
}

function getVideoInfos(video_link){
    try {
        ytdl.getInfo(video_link, function(err,info){
            if(err) {
                console.log(err);
            } else {
                printVideoInfos(info);
            }
        });
    } catch(err) {
        console.log('getVideoInfos err: '+ err);
    }
}

function printVideoInfos(infos){
    try{
        var title = infos.title;
        var thumb = infos.thumbnail_url;
        var vid = infos.video_id;
        $('#items_container').append('<div class="youtube_item"><img src="'+thumb+'" style="float:left;"/><p><b>'+title+'</b></p><div id="youtube_entry_res_'+vid+'"></div></div>');
        //console.log(infos);
        var num=infos.formats.length;
        if ( parseInt(num) == 0) {
                return;
        }
        var resolutions = new Array([]);
        for(var i=0; i<num; i++) {
            var vlink = infos.formats[i].url;
            var resolution = infos.formats[i].resolution;
            var resolution_full = infos.fmt_list[i][1];
            var container = infos.formats[i].container;
            // if resolution is alreay available in webm continue...
            if ( $.inArray(resolution, resolutions) > -1 ) {
                continue;
            }
            resolutions.push(resolution);
            if (container == 'flv' || container == '3gp') {
                continue;
            }
            var img='';
            if (resolution == "720p" || resolution == "1080p") {
                img='images/hd.png';
            } else {
                img='images/sd.png';
            }
            $('#youtube_entry_res_'+vid).append('<div class="resolutions_container"><a class="video_link" href="'+vlink+'" alt="'+resolution+'"><img src="'+img+'" class="resolution_img" /><span>'+ resolution+'</span></a><a href="'+vlink+'" title="'+title+'.'+container+'" class="download_file"><img src="images/down_arrow.png" /></a></div>');
        }
        if ($('#youtube_entry_res_'+vid+' div a.video_link').length == 0){
            $('#youtube_entry_res_'+vid).parent().remove();
        }
    } catch(err){
        console.log('printVideoInfos err: '+);
    }
}
功能搜索视频(用户搜索){
试一试{
$(“#项#容器”).empty();
youtube.feeds.videos({
q:“”+用户搜索+“”,
“开始索引”:“+当前开始索引+”,
“最大结果”:25,
orderby:“相关性”
},
功能(错误、数据){
if(err instanceof Error){
console.log(错误)
}否则{
items=data.items
当前\上一个\开始\索引=当前\开始\索引;
如果(当前页面==1){
$('.back').css({'display':'None'});
}否则{
$('.back').css({'display':'block'});
$('.next').css({'display':'block'});
}
如果(项目长度<25){
$('.next').css({'display':'None'});
}

对于(var i=0;i要使它们保持有序,您需要使用,查找async.series函数,它应该会帮助您。这将按照您给定的顺序执行所有操作