以下情况是否可能?
async function doesSocketAgree(){
socket.emit('doesOtherSocketAgree', otherSocketId);
await socket.on('responseDoesSocketAgree', (answer)=>{
console.log('answer');
});
}
最佳答案
在socket.io中,您可以使用“确认”回调:
async function doesSocketAgree(){
await new Promise(resolve => {
socket.emit('doesOtherSocketAgree', otherSocketId, (answer) => {
resolve(answer);
});
});
}
https://socket.io/docs/#Sending-and-getting-data-acknowledgements
因此您可以使用单个 emit()
并可以触发回调。
这样做的好处是,您不必在每次调用此函数时都注册事件监听器来处理内存泄漏。
关于javascript - 等待 socket.on ('answerToRequest' ) 可以使用 Socket.io 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60271984/