Open Weather
マップを使用して天気を検索しようとしています。私はfindWeatherByLocation
とfindWeatherByCity
の2つの方法があります。私はJavaScript
がmethod overloading
をサポートしておらず、したがって2つの異なる名前をサポートしていると仮定しています。どちらの方法も、callback
関数を受け入れ、同じことを行います。JavaScriptでコードの重複を避けるには、添付のスニペットですか?
function findWeatherForCity(senderID, city, countryCode, callback) {
//Lets configure and request
request({
url: constants.OPEN_WEATHER_MAP_BASE_URL, //URL to hit
qs: {
q: city + ',' + countryCode,
appid: constants.OPEN_WEATHER_MAP_API_KEY
}, //Query string data
method: 'GET', //Specify the method
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
let weather = getWeatherReport(JSON.parse(body));
callback(weather ? weather : null);
}
else {
console.error(response.error);
callback(null);
}
});
}
/*
lat, lon coordinates of the location of your interest
* http://openweathermap.org/current
*/
function findWeatherForLocation(senderID, location, callback) {
//Lets configure and request
request({
url: constants.OPEN_WEATHER_MAP_BASE_URL, //URL to hit
qs: {
lat: location.lat,
lon: location.lon,
appid: constants.OPEN_WEATHER_MAP_API_KEY
}, //Query string data
method: 'GET', //Specify the method
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
let report = getWeatherReport(JSON.parse(body));
callback(report ? report : null);
}
else {
console.error(response.error)
callback(null);
}
});
}
ご覧のとおり、function(error, response, body)
は両方の場所で同じことを行います。 findWeatherByCity
とfindWeatherByLocation
の両方に共通の別のfunction(error, response, body)
を作成すると、callback
はどのようにトリガーされますか?事前にあなたの助けのための
感謝。
私はそれがこのdoesntのは見栄え偉大に関して –