Вы можете попробовать это:
let user = await new Promise((accept, reject) => {
this.$socket.emit('get_current_user', current_user => {
if (current_user) {
accept(current_user)
} else {
reject(null)
}
})
})
Чтобы дождаться некоторого кода, который требует обратного вызова, вы должны создать обещание. await будет ждать после разрешения пройденного обещания.
Дело не в этом, но я чувствую хорошее упражнение, чтобы сделать общее с этим:
const fromSocket = address => new Promise((accept, reject) =>
this.$socket.emit(
address,
obj => obj && accept(obj) || reject(null)
)
)
let user = await fromSocket('get_current_user')