我正在写一个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
}
有办法做到这一点吗?
答案 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
}