Node.js回调不起作用

马可·费雷奥利(Marco Ferraioli)

这是代码

var http = require('http');
var request = require("request");

function getData(city, callback){
    var urlData = 'http://api.openweathermap.org/data/2.5/weather?q='+city;
    callback.write("urlRequest : "+urlData+"\n");


    request(urlData, function(error, response, body, callback) {
        if(callback && typeof(callback) === "function")
            callback.write(body);
    });
}

// create http server
http.createServer(function (req, res) {
    var query = require('url').parse(req.url).query;
    var app = require('querystring').parse(query).city;
    // content header
    res.writeHead(200, {'Content-Type': 'text/plain'});
    if(app)
        getData(app, res);
    else 
        res.write("Use url:port?city=xxxx");

    res.end();
}).listen(8124);
console.log('Server running at 8124');

我需要打印得到的内容,我尝试使用回调,但未成功。我不明白什么是错的。我认为错误是在这行或功能是错误的

request(urlData, function(error, response, body, callback) {
一起

将getData函数的第二个参数的名称更改为其他名称(回调-> res)。您在请求调用中发生名称冲突(回调是一个函数,您想访问res变量)。

顺便说一句,如果请求是异步的,它将无法正常工作,因为在调用res.write()之前先调用res.end()。

编辑:

var http = require('http');
var request = require("request");

function getData(city, res){ // Here
    var urlData = 'http://api.openweathermap.org/data/2.5/weather?q='+city;
    res.write("urlRequest : "+urlData+"\n"); // Here


    request(urlData, function(error, response, body, callback) {
        if(callback && typeof(callback) === "function")
            res.write(body); // Here
        res.end(); // Here
    });
}

// create http server
http.createServer(function (req, res) {
    var query = require('url').parse(req.url).query;
    var app = require('querystring').parse(query).city;
    // content header
    res.writeHead(200, {'Content-Type': 'text/plain'});
    if(app) {
        getData(app, res);
    }
    else {
        res.write("Use url:port?city=xxxx");
        res.end(); // Here
    }
}).listen(8124);
console.log('Server running at 8124');

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章