使用Express在Node.js上执行以下代码,但它不返回任何内容。看起来res.send在promise.then()中不起作用;看起来它已经在promise resolve()之前返回给调用者;我做错了什么?根据例子,它应该工作。感谢。
const express = require('express');
const app = express();
app.get('/test', (req, res, next) => {
res.send("Good"); // Works Just Fine , but I dont need to return here
getMessage().then(function(data){
console.log("I'm here"); // Message works
res.send("Good"); // Does not Work
}).catch(function(error){
res.send("Error");
});
});
function getMessage(){
return new Promise(function(resolve, reject){
setTimeout(function() {
resolve();
}, 3000);
});
}
app.listen(PORT, () => {
console.log("run");
});
答案 0 :(得分:1)
请在您的应用中添加以下代码:Refer Here
此应用启动服务器并侦听端口8080以获取连接
app.listen(8080, function () {
console.log('Example app listening on port 8080!')
})
答案 1 :(得分:0)
您需要侦听端口以便运行快速服务器。
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/test', (req, res, next) => {
getMessage().then(function(data){
res.send("Good");
}).catch(function(error){
res.send("Error");
});
});
function getMessage() {
return new Promise((resolve, reject) => {
setTimeout(function() {
resolve();
}, 3000);
});
}
app.listen(port, () => console.log(`App listening at http://localhost:${port}`));
答案 2 :(得分:0)
问题在于Postman中的请求超时设置,我正在使用它进行测试。
答案 3 :(得分:0)
删除第一个
res.send('good');
或者您可以先 res.write() 那么应该在 res.send()
时将邮件串联起来res.write('good')
res.send()关闭服务器与客户端之间的连接 因此,使用res.write()将写消息,并且在发送res.send()时,所有已写消息(使用res.write())都将发送回客户打电话给
穿着短裤
res.write()可能会发生多次
res.send()仅在每个请求中发生一次