#javascript #asynchronous #async-await #webrtc
#javascript #асинхронный #async-await #webrtc
Вопрос:
Я просматривал документацию WebRTC и нашел следующий фрагмент кода.
const openMediaDevices = async (constraints) => {
return await navigator.mediaDevices.getUserMedia(constraints);
}
try {
const stream = openMediaDevices({'video':true,'audio':true});
console.log('Got MediaStream:', stream);
} catch(error) {
console.error('Error accessing media devices.', error);
}
Здесь openMediaDevices() возвращает обещание, пока оно использовалось внутри блока try{} без какого-либо ожидания. Будет ли программа ждать завершения openMediaDevices()? Если да, то как?
Комментарии:
1. возвращаемые
Promise
иasync
разные. На самом деле, внутренний Javascript, вероятно, используетсяPromise
для обеспечения функциональности сasync
await
помощью ключевых слов and2. @canbax
async
иawait
в основном являются синтаксическим сахаром по сравнению с обещаниями разрешить альтернативный синтаксис. Они не отличаются.
Ответ №1:
Будет ли программа ждать завершения openMediaDevices()?
Нет.
Комментарии:
1. Значит, у них неправильная программа? Пожалуйста, проверьте webrtc.org/getting-started/media-devices#using-asyncawait .
2. Более подробно в
webrtc.org
коде отсутствуетawait
оператор междуconst stream =
и сразу после вызоваopenMediaDevices
(по крайней мере, в октябре 2020 года).3. Предоставление вспомогательной функции
navigator.mediaDevices.getUserMedia
более короткого имениasync
также совершенно бессмысленно.4. учебное пособие по webrtc.org это неправильно в этом и других местах…