Node.js中的HTTP请求无法正常工作?

拉夫·德夫

我试图做一个HTTP请求功能。所有请求都到达相同域中的相同目录,只有文件名不同。

控制台中什么都没有发生,并且什么也不返回。

function HttpRequest(filename){

    var options = {
        host: "example.com",
        port: 80,
        path: "/path/to/file/" + filename,
        method: "GET",
    };

    var Response = "";
    var StatusCode = 0;

    var req = http.request(options, function(resp){
        resp.on('data', function(data){
            Response = data;
            StatusCode = resp.statusCode;
        });
    });

    req.on('error',function(e){
        console.log("Request to '" + filename + "' failed: " + e.message)
    });

    req.write('data\n');
    req.write('data\n');
    req.end();

    return Response;
}
鲁西·潘查尔(Rushy Panchal)

您正在遇到此问题,因为该http.request函数本质上是异步的-您根本不知道何时返回。

此代码块将为正确的变量分配正确的值(尽管,您可能会在这里遇到范围问题):

var req = http.request(options, function(resp){
        resp.on('data', function(data){
            Response = data;
            StatusCode = resp.statusCode;
        });
    });

但您永远不会知道何时Response设置为data当您编写时return Response,实质上Response是在函数完成执行后立即返回的值-但这并不意味着HTTP请求已完成或回调已被执行。

正如@Jonathan Lonowski在评论中提到的那样,此答案是您应该如何尝试解决问题的方式。

本质上,您需要使用作为函数参数提供的回调。

function HttpRequest(filename, callback){

    var options = {
        host: "example.com",
        port: 80,
        path: "/path/to/file/" + filename,
        method: "GET",
    };

    var req = http.request(options, function(resp){
        resp.on('data', callback);
    });

    req.on('error',function(e){
        console.log("Request to '" + filename + "' failed: " + e.message)
    });

    req.write('data\n');
    req.write('data\n');
    req.end();
}

然后,在调用函数时:

HttpRequest("myfile", function(data) {
    console.log(data);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我在node.js中的http.createserver无法正常工作?

来自分类Dev

媒体查询在Node.js中无法正常工作

来自分类Dev

Node.js模块在不同设备中无法正常工作

来自分类Dev

For循环在Node.js中无法正常工作

来自分类Dev

for循环在Node.js中无法正常工作

来自分类Dev

emailjs无法正常工作[node js]

来自分类Dev

Node.js要求无法正常工作

来自分类Dev

node-http2模块中的HTTP2_Plain无法正常工作?

来自分类常见问题

异步中代码执行的顺序等待在Node.js中的函数中无法正常工作?

来自分类Dev

Node js http 请求:选项中的变量

来自分类Dev

Node.js中的Promise无法正常工作并没有错误

来自分类Dev

node.js string.replace无法正常工作?

来自分类Dev

Node.js子域无法正常工作?

来自分类Dev

req.files无法正常工作node.js-表达

来自分类Dev

带有node.js的cloudinary作物无法正常工作?

来自分类Dev

回调无法正常工作node.js

来自分类Dev

Node.js-套接字断开事件无法正常工作

来自分类Dev

node.js 13-导入无法正常工作

来自分类Dev

使用node.js创建的端点无法正常工作?

来自分类Dev

Node.js承诺异步/等待无法正常工作

来自分类Dev

jQuery发现无法在Node.js中正常工作

来自分类Dev

为什么Node js res.send无法正常工作?

来自分类Dev

Node.js / Express路由无法正常工作

来自分类Dev

Node.js异步系列无法正常工作

来自分类Dev

Node.js SAML注销无法正常工作-saml + adfs

来自分类Dev

Node.js Express路由器无法正常工作

来自分类Dev

Laravel中的HTTP请求无法正常工作

来自分类Dev

如果端口范围太宽,Node中的Portscan无法正常工作

来自分类Dev

无法验证 HTTP GET 请求 Node.js + Expressjs

Related 相关文章

热门标签

归档