on ('request') вызывается дважды на каждый запрос, почему? - PullRequest
0 голосов
/ 26 мая 2018

У меня есть простой код js узла, который возвращает строку JSON в пользовательском интерфейсе, если обещание успешно разрешено, иначе это с ошибкой показа в пользовательском интерфейсе.

const server = require('http').createServer();

server.on('request', (request, response) => {

    new Promise(function(resolve, reject) {

        var jsonInput = '{"result":true, "count":42}';

        resolve(JSON.parse(jsonInput));

    }).then((data) => {

      response.end(JSON.stringify(data));

    }).catch((err) => {

      response.end(String(err));

    });

    console.log('received a request');

});

server.listen(8000);

Почему 'received a request' печатается дважды?Браузер отправляет второй запрос автоматически или мой код глючит?

1 Ответ

0 голосов
/ 26 мая 2018

Почему «полученный запрос» печатается дважды?

Скорее всего, потому что ваш браузер отправил два запроса.Chrome делает это при первом подключении, например, отправляя сначала запрос на URL, который вы фактически запрашивали, а также запрос на favicon.ico.Посмотрите на request.url, чтобы увидеть, для чего нужны запросы.

Например, если я беру ваш код и помещаю его в файл, и изменяю строку console.log на:

console.log('received a request: ' + request.url);

Когда я подключаюсь к http://localhost:8000/, я вижу:

received a request: /
received a request: /favicon.ico
...