promise是JavaScript中一种处理异步操作的方案,从本质上来讲它也是一个对象。在学习JavaScript开发中,我们不可避免地会遇到一些异步操作,比如定时器、Ajax请求、页面渲染等等。如果你使用过callback,你就会知道callback可能会导致回调地狱,而promise则被称为解决回调地狱的终极武器。
一个Promise包含以下三个状态:
- pending(进行中): 初始状态,既不是成功,也不是失败状态。
- fulfilled(已成功): 表示操作成功完成,Promise实例处于此状态时,将会有一个结果值,即传给resolve()方法的值。
- rejected(已失败): 表示操作失败,Promise实例处于此状态时,将会有一个原因值,即传给reject()方法的值。
Promise非常直观,易于理解,可以使代码逻辑更加清晰明了,避免了回调地狱,让异步代码像同步代码一样易于维护。该技术在NodeJS中已经广泛应用,同时在浏览器端也得到了广泛支持。