Я использую Nodejs с ExpressJs. Я пишу данные в ответе (просто пишу, а не заканчиваю). После записи некоторых данных я заканчиваю ответ через 5 сек c. Теперь, когда я выполняю вызов API с помощью curl или из адресной строки браузера, я могу видеть фактические данные в реальном времени в том виде, в каком они записываются бэкэндом. Однако, когда я выполняю вызов с консоли браузера, используя fetch API , я могу видеть данные только после окончания ответа. Подобное поведение наблюдается при использовании POSTMAN. Возможно ли увидеть ответ в том виде, в котором он написан с использованием fetch api или любым другим способом?
this.express.use('/testing', async (req, res, next) => {
res.statusCode = 200;
res.writeHead(200, {
'Content-Type': 'text/plain',
'Transfer-Encoding': 'chunked'
});
res.write(
'USERID,NAME,FBID,ACCOUNT,SUBSCRIPTION,PRICE,STATE,TIMEPERIOD\n'
);
for (let i = 0; i < 3000; i++) {
res.write(
`${i}. 23,John Doe,1234,500,SUBSCRIPITON,100,ACTIVE,30\n`
);
await new Promise((res, rej) => {
setTimeout(() => {
res();
}, 1);
});
}
console.log(
'now you should have got the response. Will close the stream after 5s.'
);
setTimeout(() => {
res.end();
console.log('response closed');
}, 1000);
});
Вот как я использую fetch api, чтобы получить мой ответ:
fetch("http://localhost:3000/testing", {
"credentials":"include",
"headers":{
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
"accept-language":"en-US,en;q=0.9",
"max-age=0",
"upgrade-insecure-requests":"1" },
"referrerPolicy":"no-referrer-when-downgrade",
"body":null,"method":"GET"
})
.then(res => res.text())
.then(res => console.log(res));