Introduction to ES6 promises
Promises aim to solve a lot of the problems that come up when we have a lot of asynchronous code in our application. They make it a lot easier to manage our asynchronous computations—things such as requesting data from a database. Alternatively, in the case of a weather app, things such as fetching data from a URL.
In the app.js
file we do a similar thing using callbacks:
const yargs = require('yargs'); const geocode = require('./geocode/geocode'); const weather = require('./weather/weather'); const argv = yargs .options({ a: { demand: true, alias: 'address', describe: 'Address to fetch weather for', string: true } }) .help() .alias('help', 'h') .argv; geocode.geocodeAddress(argv.address, (errorMessage, results) => { if (errorMessage) { console.log(errorMessage); } else { console.log(results.address); weather.getWeather(results.latitude, results.longitude, (errorMessage, weatherResults) => { ...