Как подождать, пока все подписки не запустятся, прежде чем возвращать функцию?

Строки предназначены для представления текста. Аудиоданные не являются текстовыми. Попытайтесь, как можете, невозможно переместить некоторые аудиоданные в String, а затем попытаться извлечь ваши аудиоданные из String. Он не предназначен для работы.

Поскольку аудиоданные, с которыми вы хотите работать, не являются текстом, то у вас нет оснований предполагать, что String в этом процессе. Забудьте о Strings, теперь вы знаете, что они не подходят для вашей цели, поэтому оставьте их в покое полностью. Двоичные данные, такие как аудио, могут быть представлены как последовательности байтов. Например, например, массив byte [].

Удалить переменную String testString. Не строите его, не объявляйте, полностью удаляйте. Это строка, и вы не можете использовать Strings для своей цели, поэтому избавитесь от нее.

Вместо этого давайте сосредоточимся на использовании вашей переменной byte[] test как есть. Это уже байт [] и содержит все данные. Так что это все, что вам нужно.

Вы можете записать его с помощью System.out.write(test);, но в консоли это не очень полезно. В OutputStream сокета это прекрасно.

Или вы можете записать его шестнадцатеричную кодированную версию с помощью:

System.out.println(getHexString(test));

Здесь вы получите полностью функциональный результат. Декодирование их обратно в байты даст вам именно те байты, с которых вы начали.

-1
задан Diskdrive 19 January 2019 в 13:12
поделиться

1 ответ

Используйте оператор forkJoin для ожидания массива наблюдаемых, например:

const { forkJoin, of } = rxjs; // = require("rxjs")

// simulate API call
const fetchFromApi = id => of(`result: ${id}`);

const ids = [1, 2, 3, 4, 5];
const requests = ids.map(fetchFromApi);
forkJoin(requests)
  .subscribe(e => console.log(e))
<script src="https://unpkg.com/rxjs@6.3.3/bundles/rxjs.umd.min.js"></script>

0
ответ дан Oles Savluk 19 January 2019 в 13:12
поделиться
Другие вопросы по тегам:

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