【发布时间】:2019-10-16 20:15:33
【问题描述】:
我正在使用 socket.io。即使我可以在尝试将数据发送回调用客户端之前 console.log() 数据(对象数组),我也无法从服务器接收数据。如果我将信息硬编码到发射中,它将显示在客户端上,但是当我使用动态创建的对象数组时,它不会通过。我的直觉告诉我这是一个异步问题,但我正在使用 bluebird 来管理它。也许它是一个编码问题?我试过 JSON.stringify 和 JSON.parse,没有骰子。
服务器
socket.on('getClassList', function(){
sCon.getClassList()
.then(function(data){
console.log(data) //data is an array full of objects
socket.emit('STC_gotDatList', data)
})
})
硬编码的预期输出:
classes['moof'] = {
accessList: [888],
connectedList: [],
firstName: "sallyburnsjellyworth"
}
客户
socket.on('STC_gotDatList', function(info){
console.log(info) //prints [] or {}
})
编辑:
我记得在某处读到 console.log() 在数据可用/填充时可能没有打印数据。即使我使用 Promises,也可能是这样吗?在我发出数据时,它还没有被填充到数组中?我将如何解决这种情况?
编辑2:
更近一步。为了让任何东西返回,出于某种原因,我必须返回“类”数组中的每个特定对象。它不允许我发送整个数组,对于我上面给出的示例,要向客户端获取数据,我必须返回(类 ['moof']),不能返回(类)来获取整个数组。 .. 不知道为什么。
EDIT3:解决方案:你不能这样做。我必须将“moof”作为属性(className)放入类中,然后我才能传递整个类数组。
【问题讨论】:
标签: socket.io