我是javascript初学者。对不起,如果我问愚蠢的问题。这是我试图获取媒体元素列表的代码。
function getCams(){
var media_list = [];
MediaStreamTrack.getSources(function(sourceInfos){
var i=0;
while(i!=sourceInfos.length){
if (sourceInfos[i].kind == 'video'){
var temp = [];
temp.push(sourceInfos[i].id);
temp.push(sourceInfos[i].label);
media_list.push(temp);
}
i++;
}
console.log(media_list);
});
return media_list
}
但是当我调用此函数时它会返回空白列表,但是在console.log(media_list)中它会使用元素数据记录列表。 可能是异步运行,如果是这种情况,那么如何重写此函数以便同步运行以便我能够获取媒体元素列表?
如果不是这样,那么请指导我如何获得该列表。
答案 0 :(得分:3)
如果它是异步的,请使用回调:
getCams(function(media_list) {
// do stuff with media_list
});
function getCams(callback){
var media_list = [];
MediaStreamTrack.getSources(function(sourceInfos){
var i=0;
while(i!=sourceInfos.length){
if (sourceInfos[i].kind == 'video'){
var temp = [];
temp.push(sourceInfos[i].id);
temp.push(sourceInfos[i].label);
media_list.push(temp);
}
i++;
}
console.log(media_list);
callback(media_list);
});
}