首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取所有可用的麦克风- Map不是一个函数。

获取所有可用的麦克风- Map不是一个函数。
EN

Stack Overflow用户
提问于 2021-03-03 11:05:44
回答 1查看 39关注 0票数 0

我有下面的代码来用可用的麦克风填充select

代码语言:javascript
复制
const audioInputSelect = document.querySelector('select#audioSource');

// Updates the select element with the provided set of cameras
function updateMicrophoneList(microphones) {
    console.log(microphones);
    audioInputSelect.innerHTML = '';
    microphones.map(microphone => {
        const microphoneOption = document.createElement('option');
        microphoneOption.label = microphone.label;
        microphoneOption.value = microphone.deviceId;
    }).forEach(microphoneOption => audioInputSelect.add(microphoneOption));
}


// Fetch an array of devices of a certain type
async function getConnectedDevices(type) {
    const devices = await navigator.mediaDevices.enumerateDevices();
    return devices.filter(device => device.kind === type)
}


// Get the initial set of cameras connected
const microphonesList = getConnectedDevices('audioinput');
updateMicrophoneList(microphonesList);

// Listen for changes to media devices and update the list accordingly
navigator.mediaDevices.addEventListener('devicechange', event => {
    const newMicrophoneList = getConnectedDevices('audioinput');
    updateMicrophoneList(newMicrophoneList);
});

我搞错了

代码语言:javascript
复制
VM1759 audio_devices.js:7 Uncaught TypeError: microphones.map is not a function
    at updateMicrophoneList (VM1759 audio_devices.js:7)
    at VM1759 audio_devices.js:24

为什么map不在这里工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-03 11:10:49

getConnectedDevices是一个异步函数,意味着它返回一个承诺,而不是一个数组。您可以使用.then函数在实现承诺时更新列表。

代码语言:javascript
复制
getConnectedDevices('audioinput').then(updateMicrophoneList);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66455768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档