node.js - 在等待调用中中断异步函数

标签 node.js asynchronous

好吧,我正在使用基于 Promise 的库处理来自 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 函数的其余部分?但似乎还在继续?

最佳答案

因为您使用的是 await,所以您可以放弃 .then,并在同一 block 中直接获取 结果 - if结果存在,然后只需返回(在_ponging之后,如果这是您正在寻找的逻辑):

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;
  }
  // ...
});

关于node.js - 在等待调用中中断异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895270/

相关文章:

javascript - 使用 jquery 使动画异步/同步的干净方法

javascript - 如何处理本身被异步触发的异步ajax调用

cocoa - IO蓝牙同步读取

c++ - 如何为多个文件处理选择最佳 I/O 策略?

javascript - 在以 JSON 格式导入 MongoDB 之前清理 HTTP 响应 header 中的非法字符

javascript - Node (Express) - 尝试通过 API 调用保存 PDF

node.js - NodeJS Sequelize ORM db :seed:all drops tables from db

javascript - AWS Dynamodb 配置中缺少凭证,如果使用 AWS_CONFIG_FILE,则设置 AWS_SDK_LOAD_CONFIG=1

javascript - 让 CORS 与 JQuery 客户端、Node/Express 服务器一起使用时出现问题

django - 使用 Node.js 将流式 Web api 与 django 结合使用