node-celery asychronise,等待client.call()完成其内部函数



我在node.js服务器中使用node-celery 0.2.8,我创建,在client.on.on()上使用等待日志"最后"。但是,代码控制台日志首先是"最终",然后在完成所有代码之后,Console Log Result。谁能帮我让等待的client.on.on.on()?我只是希望代码可以按顺序执行,并按照asychronise请求等待。

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');

最新更新