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