欢迎光临
我们一直在努力

JavaScript | 面试Promise

Promise 的特点是什么,分别有什么优缺点?什么是 Promise 链?Promise 构造函数执行和 then 函数执行有什么区别?

Promise翻译过来就是承诺的意思,这个承诺在未来会有一个确切的答复,并且Promise有三种状态,分别是:

  • 等待中 pending
  • 完成了 resolved
  • 拒绝了 rejected

这个承诺一旦从等待状态变成其他状态就永远不能更改状态了,也就是说状态一旦改变成resolved或rejected,就不可能再次改变。

new Promise((resolve,reject)=>{
  resolve('sucess');
  reject('reject'); //若上段代码执行,此段代码无效
})

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

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

Promise实现了链式调用,也就是说每次调用then之后返回的都是一个Promise,并且是一个全新的Promise(Promise状态一经改变无法恢复),如果在then中使用了return,那么return的值会被Promise.serolve()包装

Promise.resolve(1)
.then(res=>{
  console.log(res); // 1
  return 2;  //被包装成Promise.resolve(2);
})
.then(res=>{
  console.log(res); // 2
})

通过Promise也可以解决回调地域的问题,关于回调地域,将会在其他文章中详细说明。

赞(0) 打赏
未经允许不得转载:散人研 » JavaScript | 面试Promise
分享到: 更多 (0)

评论 抢沙发

7 + 5 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏