0

我在我的 node.js 服务器中使用 node-celery 0.2.8,我创建,在 client.on() 上使用 await,希望代码首先控制台记录结果,然后“最终”记录。但是代码控制台日志'终于'首先,然后在遍历所有代码之后,控制台日志结果。谁能帮我让等待在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');
}
4

1 回答 1

1

请尝试将“连接”事件之后的操作放入承诺中,然后等待解决。

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');
于 2017-03-15T03:08:29.057 回答