promise为什么是异步的(碎片时间学编程)(1)

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

,