我對Node JS有點新,所以我從簡單的東西開始。天氣應用程序。但是我有一個問題,我現在正在尋找幾個小時,但找不到解決方案。所以這就是爲什麼我在這裏問。NodeJS回調函數不是函數
我的回調出現錯誤。 這是我的代碼:
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;
編輯:奇怪的是,它並沒有在天氣變化工作,而它的地址變量工作...:'(
看起來像你缺少第三個參數:'weather(lat,long,yourCallbackFunction);' – mika