Получить данные из асинхронной функции с помощью callback

Всем привет! Подскажите, пожалуйста, как можно получить данные из асинхронной функции с помощью callback Без использования обещаний и async/await.

function getItem(item, callback) {
 
        setTimeout(() => callback(item), 1000);
    }


Ответы (2 шт):

Автор решения: Arturas Lapinskas

Используя события. Создаем событие event, в коллбаке при получении значения диспатчим его eventDispatch и ловим его там где вам нужно с помощью addEventListener

→ Ссылка
Автор решения: vsemozhebuty

Обычно говорят, что асинхронность «заразна» — если уж вы используете асинхронный код, любые данные из него придётся и дальше использовать асинхронно. Синхронный и асинхронный код — как две параллельные прямые, как два разных мира, они не пересекаются. Попытка вернуть данные из асинхронного кода в синхронный — это как вернуть значение в прошлое.

Есть несколько способов работать с асинхронным кодом, и почти все основные вы забраковали — Promise (в том числе в виде async/await) и события. Так что остаётся только цепочка колбеков: значение, которые вы получаете в колбеке, и использовать нужно в колбеке, то есть переносите весь дальнейший код в колбек или вызывайте функции из колбека.

Подробнее можно почитать, например, в ответах к этому традиционно упоминаемому вопросу: Как вернуть значение из события или из функции обратного вызова? Или хотя бы дождаться их окончания

Или из английского раздела: https://stackoverflow.com/questions/14220321/

→ Ссылка