Отключение от асинхронной функции в ожидании вызова - PullRequest
1 голос
/ 05 июля 2019

Хорошо, я работаю с данными из Memcache, используя библиотеку, основанную на обещаниях, но у меня проблема в том, что я не знаю, как выйти из асинхронного вызова, если найден результат?

Код, с которым я работаю:

        const _pong = function() {
            return socket.emit('aye', {
                pong: globals.uuid()
            });
        };
        return socket.on('helo', async function(data) {
            socket._uuid = data.uuid;
            let key = 'ws-ping:' + data.uuid;
            await cache.get(key).then((result) => {
                if(result !== undefined) {
                    _pong();
                }
            });
            ......
        });

Мне нужно просто игнорировать оставшуюся функцию socket.on, если найден результат с использованием данной клавиши? но это похоже на продолжение?

1 Ответ

1 голос
/ 05 июля 2019

Поскольку вы используете await, вы можете отказаться от .then и получить result напрямую, в том же блоке - если результат существует, то просто return (после _pong ing, если это логика, которую вы ищете):

return socket.on('helo', async function(data) {
  socket._uuid = data.uuid;
  let key = 'ws-ping:' + data.uuid;
  const result = await cache.get(key);
  if (result !== undefined) {
    _pong();
    return;
  }
  // ...
});
...