使用 koa.js,我想创建一个 API,它运行一个在后台运行很长时间的生成器函数,但立即将令牌发送回用户。
然后,用户可以使用该令牌稍后检索其作业的状态。
'use strict';
var generateToken = function(){
//...
};
var processData = function *(data, token) {
//...
var a = yield analysis(data);
console.log(a) // a is undefined
};
app.post('/process_data', validate, function *(next) {
var token = generateToken();
var that = this;
setTimeout(function() {
for (var i of processData(that.request.body, token)){
continue;
}
});
this.body = "this should return immediately " + token;
return next;
});
在 setTimeout 内运行它,不会保存变量“a”。我如何构造它以使 processData 像正常产量一样运行?