Promises represent eventual completion or failure of async operations. They have three states: pending, fulfilled, rejected. Promise.all, Promise.race, and Promise.allSettled handle multiple promises. They replaced callback hell with chainable .then()/.catch().