promise的理解以及promise面试题整理

1. 了解 Promise 吗?
  • promise是一种异步编程的解决方案。用于解决回调地狱的问题。
  • promise的写法
new Promise(请求1)     .then(请求2(请求结果1))     .then(请求3(请求结果2))     .then(请求4(请求结果3))     .then(请求5(请求结果4))     .catch(处理异常(异常信息))
复制代码
  • promisedeAPI
// 根据传入的value不同而返回不同的值,如果传入的是对象的话则会返回一个状态为成功的promise对象
promise.resolve(value)
// 根据传入的value不同而返回不同的值,如果传入的是对象的话则会返回一个状态为失败的promise对象
promise.reject(value)
Promise.prototype.then()
Promise.prototype.catch()
Promise.race()
Promise.all()
复制代码
2. Promise 解决的痛点是什么?

地狱回调地狱。

3. Promise 解决的痛点还有其他方法可以解决吗?如果有,请列举。

es7的async和await

4. Promise 如何使用?
5. Promise 常用的方法,方法的作用?
6. Promise 在事件循环中的执行过程是怎样的?

promise是事情循环中的微任务(micotask),在每次事情循环中会先清空了微任务的队列。

7. Promise 的业界实现都有哪些?
8. 能不能手写一个 Promise 的polyfill。
9. promise的问题?解决办法?
  • promise一旦执行,无法中途取消
  • promise的错误无法在外部被捕捉到,只能在内部进行预判处理
  • promise的内如何执行,监测起来很难
  • 正是因为这些原因,ES7引入了更加灵活多变的async,await来处理异步。
10. 手写promise与ajax的结合?
function promiseGet (url) {
  return new Promise((resolve, reject) => {
    let xhr = new XMLHttpRequest()
    xhr.open('GET', url, true)
    xhr.onreadystatechange = function () {
      if (this.readyState === 4) {
        if (this.status === 200) {
          resolve(this.responseText,this)
        } else {
          let resJson = {
            code: this.status,
            response: this.response
          }
          reject(resJson, this)
        }
      }
    }
  })
}
复制代码

漫谈promise使用场景 面试精选之Promise ES6Promise用法讲解 Promise

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值