我有一个回调,需要从回调中获取数组。
我正在尝试将等待的数组返回到预定义的数组中。
let documents = [];
socket.on('echo', async function(documents, data){
documents = await data;
console.log(documents); // shows me, what I want to see
});
console.log(documents); // empty Array
我需要预定义数组documents
中的结果
我读过几本Tut,但我听不懂。我知道在stackoverflow它被困了好几次。但是所有线程似乎都比我的情况复杂。因此,我希望通过更复杂的方法来清除它。
答案 0 :(得分:2)
let documents = await socket.on('echo', async function(documents, data){
console.log(documents);
return data;
});
console.log(documents);
答案 1 :(得分:2)
您需要先了解一些知识。当此命令运行时,回调内部的内容将不运行,服务器将发出该事件,在您的情况下为“ echo”。
我想您要做的是在回调之外使用文档。您可以创建一个函数,并在事件发出时调用它。
类似这样的东西:
const manageDocuments = (documents) => {
// do what you want with documents array
console.log(documents);
}
socket.on('echo', async function(documents, data){
documents = await data;
manageDocuments(documents);
});
当然,您也可以摆脱异步/等待
答案 2 :(得分:1)
问题在于套接字函数外部的代码使用空数组执行,因为在运行时仅执行一次。
如果要访问套接字函数中的文档,则必须先进行保存,或者在另一个循环中使用socket.on。