如何从Node.js中的函数返回状态代码

dub*_*tor 1 javascript http-status-codes node.js

我有这样的功能:

function getStatusCode(site){
    var options = {
        host: "127.0.0.1",
        port: 8000,
        path: site,
        headers: {
                    Host: site
            }
        };

    var status;

    http.get(options, function(response) {
        status=response.statusCode;
    });
    return status;
} 
Run Code Online (Sandbox Code Playgroud)

如何在http.get完成工作时返回状态,如果超时(例如10秒)则返回null?

Dar*_*rov 10

node.js背后的整个想法是它的异步性质.您要做的是通过尝试使其同步来违反设计模式.

由于该get方法的异步性,您无法执行此操作.您只能在回调函数内操作状态代码.所以你getStatusCode不需要退货.您可以使用一个额外的参数来表示结果可用后调用的回调:

function getStatusCode(site, callback) {
    var options = {
        host: "127.0.0.1",
        port: 8000,
        path: site,
        headers: {
            Host: site
        }
    };

    http.get(options, function(response) {
        callback(response.statusCode);
    });
}
Run Code Online (Sandbox Code Playgroud)

然后:

getStatusCode('http://...', function(statusCode) {
    alert(statusCode);
});
Run Code Online (Sandbox Code Playgroud)