Nodejs功能可检查网站是否正常运行

时间:2019-02-17 18:31:03

标签: node.js http express

我正在尝试创建一个函数,以检查给定的URL是否有效。 这是我到目前为止所做的:

function checkWebsite(url) {
  http
    .get(url, function(res) {
      console.log(url, res.statusCode);
      return res.statusCode === 200;
    })
    .on("error", function(e) {
      return false;
    });
}

我想等到http get完成,然后根据状态码返回true或false,并且作为回调函数中的响应,我不知道如何将其返回到被调用的位置。 示例调用:

function test() {
   if (checkWebsite("https://stackoverflow.com/")) {
    return "https://stackoverflow.com/";
   } 
}

我想在此if语句中获得true或false,但是由于状态代码位于回调函数中,所以我不知道如何返回它。

1 个答案:

答案 0 :(得分:2)

我会给您一个有效的代码段,因为您无法从链接的答案中找出答案,也许会对您有所帮助:

var http = require('http');
var https = require('https');

test();

function checkWebsite(url, callback) {
  https
    .get(url, function(res) {
      console.log(url, res.statusCode);
      return callback(res.statusCode === 200);
    })
    .on("error", function(e) {
      return callback(false);
    });
}

function test(){
    checkWebsite("https://stackoverflow.com/", function(check){
        console.log(check); //true
    })
}

有诺言:

var http = require('http');
var https = require('https');

test();

function checkWebsite(url) {
    return new Promise((resolve, reject) => {
      https
        .get(url, function(res) {
          console.log(url, res.statusCode);
          resolve(res.statusCode === 200);
        })
        .on("error", function(e) {
          resolve(false);
        });     
    })
}
async function test(){
    var check = await checkWebsite("https://stackoverflow.com/");
    console.log(check); //true
}