Promise/A+

Promise本意是承诺,在程序中的意思就是承诺我过一段时间后会给你一个结果.什么时候会用到过一段时间?答案是异步操作,异步是指可能比较长时间菜能有结果的才能,列如网络请求、读取本地文件等

1.Promise的三种状态

  •  Pending---Promise对象实列创建时候的初始状态
  • Fulfilled---可以理解为成功的状态
  • Rejected---可以理解为失败的状态

这个承诺一旦从等待状态变为其他状态就永远不能更改状态了,比如说一旦状态北纬resolved后,就不能再次改变为Fulfilled

let p = new Promise((resolve, reject) => {
  reject('reject')
  resolve('success')//无效代码不会执行
})
p.then(
  value => {
    console.log(value)
  },
  reason => {
    console.log(reason)//reject
  }
)

当我们在构造Promise的时候,构造函数内部的代码是立即执行的

new Promise((resolve, reject) => {
  console.log('new Promise')
  resolve('success')
})
console.log('end')
// new Promise => end

2.promise的链式调用

  • 每次调用返回的都是一个新的Promise实列(这就是then可用链式调用的原因)
  • 如果then中返回的是一个结果的话会把这个结果传递下一次then中的成功回调
  • 如果then中出现异常,会走下一个then的失败回调
  • 在then中使用return,那么return的值会被Promise.resolve()包装
  • then中可以不传递参数,如果不传递会透到下一个then中
  • catch会捕获到没有捕获的异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Promise A是Promise/A规范的一部分,它定义了一种对Promise对象进行交互的方式。根据Promise/A规范,一个Promise对象需要暴露一个遵循Promise/A协议的then方法。这样的设计使得Promise的实现更加通用,因为只要一个对象暴露了符合规范的then方法,它就可以被视为Promise对象,而不必强制要求完全符合规范。这也使得符合Promise/A规范的实现可以与不太规范但可用的实现能够很好地共存。 在Promise的解决过程中,[[Resolve]](promise, x)是一个抽象操作,它接收一个Promise对象和一个值作为输入。如果值x有then方法且看起来像一个Promise对象,那么解决过程将尝试让promise接收x的状态。否则,解决过程将使用x的值来完成(fulfilled)promise。 一个Promise代表一个异步操作的最终结果,通过它的then方法与Promise进行交互。then方法注册了两个回调函数,用于接收Promise的最终结果或导致Promise无法被完成(fulfilled)的原因。通常,第一个回调函数用于处理Promise的成功情况,第二个回调函数用于处理Promise的失败情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Promises/A+ 规范](https://blog.csdn.net/u014627807/article/details/120011719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值