【发布时间】:2018-07-21 06:01:26
【问题描述】:
我有一个名为 listClients 的 js 函数。它使 socket.io 发出请求以从 node.js 服务器获取客户端列表,该服务器使用 fs 读取文件,然后通过回调将数据发送回客户端。
我需要将回调数据返回给原始函数,以便客户端可以执行该函数并使用它返回的数据,但由于回调被包装在它自己的函数中,它无法正常工作。解决此问题的最佳方法是什么?
客户:
function listClients() {
var sender = getCookieData('relay_client_id');
if (sender) {
socket.emit('list_relay_clients', sender, (callback) => {
return callback; //This won't work because it's async
});
return callback; //<---- I need it to be here
}
}
服务器:
socket.on('list_relay_clients', function (sender, callback) {
callback(fetchAllClients());
});
【问题讨论】:
-
在另一边,您也可以像现在为 list_relay_clients 所做的那样通过事件发射传递数据
-
我确实尝试过,它给了我相同的结果。我需要以某种方式从发出回调中获取数据,然后将其作为原始函数的返回值传递...
-
你能把工作的sn-p放在这里吗?
-
不是真的,因为它使用的是 node.js 服务器和 socket.io
-
但是我想知道你的代码 sn-p 你是怎么试的
标签: javascript node.js sockets