从回调中获取价值

时间:2019-05-27 18:30:42

标签: javascript callback

我有一个回调,需要从回调中获取数组。

我正在尝试将等待的数组返回到预定义的数组中。

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它被困了好几次。但是所有线程似乎都比我的情况复杂。因此,我希望通过更复杂的方法来清除它。

3 个答案:

答案 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。