Node.js 节点芹菜异步,等待客户端。call()完成其内部函数

Node.js 节点芹菜异步,等待客户端。call()完成其内部函数,node.js,server,node-celery,Node.js,Server,Node Celery,我在node.js服务器中使用node芹菜0.2.8,我在client.on上创建、使用wait,希望代码会首先控制台记录结果,然后记录“finally”。但是代码控制台首先记录‘最终’,然后在检查所有代码之后,记录控制台结果。有人能帮我让等待在client.on上工作吗?我只是希望代码可以按顺序执行,并等待异步请求 async(ctx) => { const client = celery.createClient({ CELERY_BROKER_URL: 'amqp://g

我在node.js服务器中使用node芹菜0.2.8,我在client.on上创建、使用wait,希望代码会首先控制台记录结果,然后记录“finally”。但是代码控制台首先记录‘最终’,然后在检查所有代码之后,记录控制台结果。有人能帮我让等待在client.on上工作吗?我只是希望代码可以按顺序执行,并等待异步请求

async(ctx) => {
  const client = celery.createClient({
    CELERY_BROKER_URL: 'amqp://guest:guest@172.**.2.**:5672//',
    CELERY_RESULT_BACKEND: 'redis://172.**.2.**:6379/2',
    CELERY_ROUTES: {
      'street.add_account_multi': {'queue': 'street_default'},
    }
  });

  await client.on('connect', () => {

    client.call('street.add_account_multi', [crawlers], function (result) {
      console.log(result);
    });

  });

  console.log('finally');
}

请尝试将“连接”事件后的操作变成承诺,然后等待解决

let clientConnect = new Promise((resolve, reject) => {
  client.on('connect',() => {
    client.call('street.add_account_multi', [crawlers], function(result) {
      console.log(result);
      resolve(result);
    });
  })
});
await clientConnect;
console.log('finally');

非常感谢你,张先生,你的回答完美地解决了我的问题!!!