koa2延时执行

在koa2的控制器中,想要延时执行一个方法,比如,二秒后返回hello字符串

// 错误的方法
exports.test = async(ctx) => {
  setTimeout(async function(){
    await ctx.render('home/test.njk');
  }, 2000);
};

真正做到在controller处理请求时延迟执行某些操作,需要实现一个delay函数,这个函数返回一个Promise,在这个Promise中调用setTimeout

// 正确的实现
exports.test = async(ctx) => {
  async function delay(time) {
    return new Promise(function(resolve, reject) {
      setTimeout(function(){
        resolve();
      }, time);
    });
  };
  await delay(2000);
  await ctx.render('home/test.njk');
};

你可能感兴趣的:(koa2)