169 похожих чатов

Здравствуйте, такой вопрос. Я хочу реализовать механизм записи аудиосообщения и реализовал

такую логику (использую redux).
Идея такая: вызывается событие startRecording, создается рекордер и запускается запись, далее я хочу дождаться вызова события stopRecording, и когда оно вызывается останавливается запись, после чего помещается в хранилище.
Как такое правидльно реализовать?
Я сделал представил снизу концепт.
Я реализовал рабочую версию при помощи прокси и внешнего, по отношению к событиям, объектам, но работает не красиво.
Буду рад совету, спасибо.

export const startRecording = () => async dispatch => {
const recorderInst = await recorder();

dispatch(recording());

recorderInst.start();

await stopRecording();

const record = await recorderInst.stop();

dispatch(wait());
dispatch(addRecord(record));
};

export const stopRecording = () => () => {
monitor.change();
};

1 ответов

17 просмотров
дикий-гуцул Автор вопроса

Если интересно, я решил это немного по другому и как кажется логичнее. export class EventGenerator { constructor(name) { this.name = name; this.event = new Event(name); this.target = new EventTarget(); } wait() { return new Promise(resolve => this.target.addEventListener(this.name, () => resolve()) ); } generate() { this.target.dispatchEvent(this.event); } } ———————————————————————————————————————————————————————— const eventGenerator = new EventGenerator("stopRecording"); export const startRecording = () => async (dispatch, getState) => { if (getState().app.state === STATE_OF_APP.RECORDING) return; if (getState().app.first) { dispatch(notFirst()); } const recorderInst = await recorder(); dispatch(recording()); recorderInst.start(); await eventGenerator.wait(); const record = await recorderInst.stop(); dispatch(wait()); dispatch(addRecord(record)); }; export const stopRecording = () => () => { eventGenerator.generate(); };

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
15
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта