我有一个回调,我需要从我的回调中取出数组。
我正在尝试将等待的数组返回到预定义的数组中。
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
中的结果
我已经读了几篇Tuts,但我还是不明白。我知道在stackoverflow上它被sked了几次。但是所有的线程似乎都比我的情况更复杂。所以我希望用一个更简单的方法把它弄清楚。
发布于 2019-05-28 02:44:40
let documents = await socket.on('echo', async function(documents, data){
console.log(documents);
return data;
});
console.log(documents);
发布于 2019-05-28 02:45:03
你需要先理解一些东西。当它运行时,回调中的东西不会运行单元,服务器将发出该事件,在你的例子中是'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);
});
当然,您也可以摆脱异步/等待
发布于 2019-05-28 02:45:03
问题是套接字函数外部的代码使用空数组执行,因为在运行时只执行一次。
如果想要访问套接字函数中的文档,则必须进行持久化,或者在另一个循环中使用socket.on。
https://stackoverflow.com/questions/56330916
复制相似问题