我得到的标题错误。 以下是我的代码。请你有人给我建议吗?
我想我每次'app.get'只发送一次 我想为index.html和splash.html分配案例。 在作出回应之前,我想延迟1秒钟。
app.use(delay(1000));
app.get('/index.html', function(req, res) {
var pathName = req.url;
console.log('!!!!!!!!!!!');
console.log(pathName);
fs.readFile(__dirname + '/views/index.html', function(error, data) {
console.log(__dirname);
if(error){
console.log(error);
} else {
console.log("load html");
console.log(req.url);
csp.add(req, res, options);
res.render(__dirname + '/views/index.html');
res.end();
}
});
});
app.get('/splash.html', function(req, res) {
var pathName = req.url;
console.log('!!!!!!!!!!!');
console.log(pathName);
fs.readFile(__dirname + '/views/splash.html', function(error, data) {
console.log(__dirname);
if(error){
console.log(error);
} else {
console.log("load html");
console.log(req.url);
csp.add(req, res, options);
res.render(__dirname + '/views/splash.html');
res.end();
}
});
});
答案 0 :(得分:1)
尝试在res.end()
之后删除res.render
,render
将结束回复。如果您想设置任何标题,请在此之前执行此操作。
实现延迟的最佳方法是在发送响应之前使用setTimeout
。
答案 1 :(得分:1)
实现此目的的最佳方法是使用rx
模块,请参阅下面的代码。响应在3秒后发送,这是我用于延迟的模块。
var app = require('express')();
const timeout = require('connect-timeout');
const Rx = require('rx');
// Response will be delayed for 3 seconds
app.get('/', function(req, res) {
Rx.Observable.create((observer) => {
observer.onNext({
response: 'potato'
})
observer.onCompleted()
})
.delay(new Date(Date.now() + 3000)) //setting it to 3 seconds
.subscribe((x) => {
console.log(x); //logs response: 'patato'
console.log('this runs');
res.status(200).send("3 seconds");
}, (e) => {
console.log('this does not');
})
});
app.listen(4000);