我是Node JS的新手,所以我从一些简单的东西开始。天气应用程序。但我有一个问题,我现在正在寻找几个小时,我找不到解决方案。那就是我在这里问的原因。
我的回调出错了。 这是我的代码:
var weather = (lat, long, callback) => {
request({
url: `https://api.darksky.net/forecast/79edcc21428e0d3076f214db1935daeb/${lat},${long}`,
json: true
}, (error, response, body) => {
var fahrenheit = body.currently.temperature;
var celsius = Math.round(((fahrenheit-32)/1.8) * 10) /10;
console.log(fahrenheit);
console.log(celsius);
callback(celsius);
});
};
我在这里打电话给回电:
// stuff to get latitude and longtitude
weather(lat, long);
var test = celsius;
该变量可能是错误的,但如果没有它,我也会收到错误。
我希望有人可以帮助我,因为我只是不知道如何解决它:(
对于那些想要查看完整代码的人: (我是荷兰人,所以这些信息也在荷兰语中,但没什么特别的。)
const request = require('request');
var weather = (lat, long, callback) => {
request({
url: `https://api.darksky.net/forecast/79edcc21428e0d3076f214db1935daeb/${lat},${long}`,
json: true
}, (error, response, body) => {
var fahrenheit = body.currently.temperature;
var celsius = Math.round(((fahrenheit-32)/1.8) * 10) /10;
console.log(fahrenheit);
console.log(celsius);
callback(celsius);
});
};
var address = (address, callback1, celsius) => {
var address = encodeURIComponent(address);
request({
url: `https://maps.googleapis.com/maps/api/geocode/json?address=${address}`,
json: true
}, (error, response, body) => {
if (error) {
callback1('Niet mogelijk om de Google servers te contacteren.');
} else if(body.status === 'ZERO_RESULTS') {
callback1('Niet mogelijk om dat address te vinden.');
} else if(body.status === 'OK') {
var lat = body.results[0].geometry.viewport.northeast.lat;
var long = body.results[0].geometry.viewport.northeast.lng;
weather(lat, long);
var test2 = celsius;
callback1(undefined, {
Test: `test: ${test2}`,
Address: body.results[0].formatted_address,
// Lat: body.results[0].geometry.viewport.northeast.lat,
// Long: body.results[0].geometry.viewport.northeast.lng
});
} else {
callback1('Er is iets mis gegaan.');
}
});
};
module.exports.address = address;
编辑:奇怪的是,它在天气变量中不起作用,而它在地址变量中起作用......:'(
答案 0 :(得分:0)
var weather = (lat, long, callback) => {
使用三个参数声明
weather(lat, long);
两个人打电话。
您是否添加了如下调试行:
var weather = (lat, long, callback) => {
console.log('callback = ', callback);
您可能已经看到callback
确实是未定义的问题。
答案 1 :(得分:0)
你的电话必须使用一个函数作为回调,事实上它并没有。这样称呼:
weather (lat, long, function (celsius) {
alert (celsius);
});
请注意,现在这是异步的。有关详细信息,请查看What is the difference between synchronous and asynchronous programming (in node.js)