I can just explain it with my own words. Promises are a different way of doing callback/asynchronous work. So traditionally, you would do this in JS:
API.get('/cars', function(cars){
// Here you have your car list
});
The main problem with this is that each library would define their own callback response parameters. We could return `cars` as a variable (jQuery), or we could return two parameters such as `(error, cars)` as in Node.js, etc.
So promises standardizes the way that different libraries execute Asynchronous code. Instead of whatever you want, you'd have to follow this syntax to do the same as above:
API.get('/cars').then(function(cars){
// Here you have your cars
});
Then if you are the one actually creating the promises it gets more tricky; let me know if you just want to use libraries with promises (above) or you want to write your own promises so I can expand the answer.