我创建了一个简短的例子,我有一个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
函数(它是天气模块的参数),用于在都灵的天气中打印到命令行。但它是如何运作的?
答案 0 :(得分:1)
我打电话给天气模块,我得到一个回调函数(它是一个 天气模块的参数)用于打印到命令行的天气 在都灵。但是怎么可能呢?
Javascript中的函数是first class object 意味着您可以将函数存储到变量中并将其传递给另一个函数。这种模式在Node.js和Javasript中很常见,一般称为Continuation passing style(CPS)
希望它有所帮助。