У меня есть обратный вызов, где мне нужно получить массив из моего обратного вызова.
Я пытаюсь вернуть ожидаемый массив в предопределенный.
let documents = [];
socket.on('echo', async function(documents, data){
documents = await data;
console.info(documents); // shows me, what I want to see
});
console.info(documents); // empty Array
Мне нужен результат в моем предопределенном массиве documents
Я прочитал несколько Тутов, но я не понимаю. Я знаю, что в stackoverflow это запрашивается несколько раз. Но все темы кажутся более сложными, чем моя ситуация. Поэтому я надеюсь разобраться с более простым.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


let documents = await socket.on('echo', async function(documents, data){
console.info(documents);
return data;
});
console.info(documents);
Проблема в том, что код вне функции сокета выполняется с пустым массивом, потому что выполняется только один раз во время выполнения.
Если вы хотите иметь доступ к документам внутри функции сокета, которую вы должны сделать, затем сохраните или используйте socket.on внутри другого цикла.
Сначала нужно кое-что понять. Когда это запускается, то, что находится внутри обратного вызова, не запускается, сервер будет генерировать это событие, в вашем случае «эхо».
Я думаю, вы хотите использовать документы вне обратного вызова. Вы можете создать функцию и вызывать ее при возникновении события.
Что-то вроде этого:
const manageDocuments = (documents) => {
// do what you want with documents array
console.info(documents);
}
socket.on('echo', async function(documents, data){
documents = await data;
manageDocuments(documents);
});
Конечно, вы также можете избавиться от async/await.
хороший. но как мне его вернуть тогда? У меня есть эта дыра в функции и мне нужно вернуть ее из функции javascript const manageDocuments = (documents) => { // I what to return these data return documents; } Можно ли сделать так? Я пытался, но когда я console.info(manageDocuments) не вижу данные, я вижу только manageDocuments() как результат. Я думаю, это потому, что, как сказал @ Хоакин Ромеро Франко
Что именно ты пытаешься сделать? Дайте мне точный код или попробуйте объяснить немного лучше, и я вам помогу :)
Я сделал это так: D javascript socket.on('echo', async function(documents, data){ documents.push(data); }); Я обнаружил, что push работает в обратном вызове :)
это выглядит как отличная идея :)