Для ясности, v3 не вышел, это всего лишь предупреждение о том, что Koa отходит от функций генератора.Вы не используете yield
, поэтому его довольно легко преобразовать:
const Koa = require('koa');
const through = require('through');
(new Koa()).use((ctx) => {
const tr = through();
setInterval(() => tr.write('blabla\n'), 1000);
setTimeout(tr.end, 30000);
ctx.type = 'text';
ctx.body = tr;
}).listen(3003, () => console.log('Listen 3003: slow response'));
Замените функцию генератора обычной функцией или функцией стрелки, у которой есть аргумент ctx
Заменить this
на ctx
Редактировать: Кроме того, я считаю, что в этом коде есть ошибка.Вы создаете новый интервал с каждым запросом, но никогда не очищаете их.Я думаю, что это будет считаться утечкой памяти.
Вы, вероятно, должны сделать что-то вроде этого:
const Koa = require('koa');
const through = require('through');
(new Koa()).use((ctx) => {
const tr = through();
let intervalId = setInterval(() => tr.write('blabla\n'), 1000);
setTimeout(end(intervalId, tr), 30000);
ctx.type = 'text';
ctx.body = tr;
}).listen(3003, () => console.log('Listen 3003: slow response'));
function end(intervalId, tr) {
return () => {
clearInterval(intervalId);
tr.end();
}
}