Promise 对象表示异步操作的最终完成(或失败)结果值。使用 Promise 的一个常见示例是从 URL 获取数据。这将创建一个 Promise 表示我们期望接收的数据的对象。例如:
fetch('https://my.api.com/items/1')
.catch(err => console.log(`Failed with error: ${err}`))
.then(response => response.json())
.then(json => console.log(json));
Promise 的棘手部分是了解结果值最初可能不可用。相反, Promise 可以处于以下三种状态之一:
Pending 待定:初始状态,既不履行也不拒绝。
Fulfilled 已完成:表示操作已成功完成。
Rejected 拒绝:表示操作失败。
挂起 Promise 可以用一个值来满足,也可以用一个原因(错误)拒绝。当其中任何一个发生时,相关的处理程序 ( Promise.prototype.then(), Promise.prototype.catch()) 就会被调用。
在前面的示例中,Promise 开始处于挂起状态,直到收到来自服务器的响应。如果在此期间出现任何问题,Promise 将被拒绝,并且 Promise.prototype.catch() 处理程序会将错误记录到控制台。否则,将执行Promise 第一个 Promise.prototype.then() 处理程序,并返回一个新的 Promise。新的 Promise 将被实现并调用第二个 Promise.prototype.then() 处理程序将解析的 JSON 数据记录到控制台。
更多技术文章请访问:https://www.icoderoad.com
,