回调函数 - NodeJS

时间:2016-10-18 16:19:35

标签: node.js

我创建了一个简短的例子,我有一个dubt:

var request = require("request");
var url = "http://api.openweathermap.org/data/2.5/weather?q=turin&APPID=xxxxxxxxxxxxxxxxxxxxxx";
module.exports = function (callback) {

    request(
    {
        url: url,
        json: true
    }, function (error, response, body) {
        if (error) {
            callback("Unable to fetch weather"); // callback function
        } else {
            callback("It is " + body.main.temp + " in " + body.name);
        }
    });

    console.log("After request");
};

从外部文件,我需要这个模块:

var weather = require("./weather.js");

weather(function (currentWeather) {
    console.log(currentWeather);
});

在这种情况下,我调用一个weather模块,我得到一个callback函数(它是天气模块的参数),用于在都灵的天气中打印到命令行。但它是如何运作的?

1 个答案:

答案 0 :(得分:1)

  

我打电话给天气模块,我得到一个回调函数(它是一个   天气模块的参数)用于打印到命令行的天气   在都灵。但是怎么可能呢?

Javascript中的函数是first class object 意味着您可以将函数存储到变量中并将其传递给另一个函数。这种模式在Node.js和Javasript中很常见,一般称为Continuation passing style(CPS)

希望它有所帮助。