我正在检索网址作为网址参数,然后显示地址是否返回状态代码200。问题是,它似乎只在几秒钟之后才能工作 - 我第一次运行它时,代码分配了mystatus'似乎没有正常工作。我觉得我在运行的顺序存在问题,但我不确定如何修复它。
var express = require("express");
var moment = require("moment");
var http = require("http");
var express = require("express");
var moment = require("moment");
var http = require("http");
var app=express();
var mystatus="";
app.get('/new/:name*', function(req,res){
//detect if name is a URL
//return output
http.get("http:"+req.params[0], function(thisres){
if (thisres.statusCode != 200){
mystatus = "Could not load";
}
else {
mystatus = "Loaded!";
}
}).on('error', function(e){
console.error(e);
})
res.json({url_part1: req.params.name,
url_part2: req.params[0],
status: mystatus
});
})
app.listen(8080, function(){
console.log("App listening on port 8080")
});
答案 0 :(得分:0)
您已在承诺中运行代码节点,因此http.get
和res.json
都在同一时间运行,因此无论哪个首先完成它都无关紧要。
将res.json
响应移动到http.get
的承诺正文中,以便在收到回复时发送回复
var express = require("express");
var moment = require("moment");
var http = require("http");
var express = require("express");
var moment = require("moment");
var http = require("http");
var app=express();
var mystatus="";
app.get('/new/:name*', function(req,res){
//detect if name is a URL
//return output
http.get("http:"+req.params[0], function(thisres){
if (thisres.statusCode != 200){
mystatus = "Could not load";
}
else {
mystatus = "Loaded!";
}
res.json({url_part1: req.params.name,
url_part2: req.params[0],
status: mystatus
});
}).on('error', function(e){
console.error(e);
})
})
app.listen(8080, function(){
console.log("App listening on port 8080")
});