首页 > 解决方案 > Nodejs函数来检查网站是否正常工作

问题描述

我正在尝试创建一个函数来检查给定的 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 语句中得到真或假,但由于状态代码在回调函数中,我不知道如何返回它。

标签: node.jshttpexpress

解决方案


我会给你一个工作片段,因为你无法从链接的答案中弄清楚,也许它会帮助你更多:

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
}

推荐阅读