IT技术之家

首页 > 前端

前端

Promise/A+_夏星966

发布时间:2023-11-28 21:01:07 前端 15次 标签:javascript 开发语言 ecmascript
Promise本意是承诺,在程序中的意思就是承诺我过一段时间后会给你一个结果.什么时候会用到过一段时间?答案是异步操作,异步是指可能比较长时间菜能有结果的才能,列如网络请求...

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会捕获到没有捕获的异常