我有简单的节点js代码,如果成功解析了promise,则在UI上返回JSON字符串,否则在UI上显示错误。
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'
被打印两次?浏览器是自动发送第二个请求还是我的代码有问题?
答案 0 :(得分:3)
为什么'收到请求'打印两次?
最有可能的,因为您的浏览器发送了两个请求。 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