Koa GET立即将结果返回给客户并随后做一些事情

时间:2015-07-06 11:22:54

标签: node.js koa

我正在写一个io.js和Koa API,我有一个GET路由,用于将数据传递给API并立即向用户返回OK。基本上我不关心GET请求将返回的结果,我只是想传递数据。这就是为什么我想向客户端返回“OK”,然后他尽快发出GET请求,然后处理请求中的数据。

到目前为止我的代码如下:

app.use(route.get("/passData", function*(){
    this.body = "OK";
    yield doSomeWork(this.query);
});

function *doSomeWork(query){
   // do work
   // the code below should be triggered when the client receives the OK message
}

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

您不希望yield doSomeWork - 告诉Koa等待,这正是您想要的。

app.use(route.get("/passData", function*(){
    this.body = "OK";
    doSomeWork(this.query); // REMOVE YIELD
});

由于doSomeWork现在只是一个普通的旧异步函数,所以它不应该是生成器。 (如果你将*留在那里,你将会调用一个生成器,除了创建一个将被丢弃的迭代器之外什么也没做。)

function doSomeWork(query){ // REMOVE ASTERISK
   // do work
   // the code below should be triggered when the client receives the OK message
}