无法返回适当的值

时间:2015-09-02 06:48:52

标签: javascript arrays

我是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)中它会使用元素数据记录列表。 可能是异步运行,如果是这种情况,那么如何重写此函数以便同步运行以便我能够获取媒体元素列表?

如果不是这样,那么请指导我如何获得该列表。

1 个答案:

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