Используя koa.js, я хочу создать API, который запускает функцию генератора, которая длится много времени в фоновом режиме, но сразу же отправляет токен пользователю.ES6 Koa.js запускает функцию генератора для завершения и возвращает асинхронно
Пользователь может затем использовать этот токен для получения статуса своей работы позже.
'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 выполнялся точно так же, как и нормальный доход?
Я думаю, что вы захотите использовать [co] (https://github.com/tj/co) напрямую – Bergi
Вы правы. благодаря! –