Fetch Api браузера (необходимо указать Chrome c) не показывает сброшенные данные ответа - PullRequest
0 голосов
/ 05 января 2020

Я использую 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));

1 Ответ

0 голосов
/ 13 января 2020

Закрытие этого вопроса, так как комментарий @Wendelin решает проблему.

...