promise面试题

Promise是ES6为解决回调地狱问题引入的一种异步处理方式。它通过链式调用来避免深层嵌套,但仍有改进空间,最终常用的是async/await。Promise有三种状态:进行中、成功和失败,通过resolve和reject改变状态并传递结果。.then和.catch用于接收成功或失败的结果。此外,Promise.all用于合并多个请求,所有请求完成才会继续;Promise.race则在任一请求完成时立即返回结果。
摘要由CSDN通过智能技术生成

首先promise是es6提供一种异步解决方案. 通过promise能够解决回调地狱问题. 所谓的这个回调地狱指的当我们执行完一个操作之后在接受着操作的结果只能通过回调函数的方式进行接受,使用回调函数的方式存在的弊端就是写法非常臃肿,并且后期难以维护,所谓es6给我提供了一种新的解决方案,就是promise来进行解决,promise可以通过链式调用的方式来解决层层嵌套的问题,但是写法上也不是非常好,所以我们最终的替代方案是使用async和await

promise一共有三个状态,分别是进行中,成功或者失败 如何成功的话可以通过resolve方法将正确结果返回出去,通过.then的方式进行接受,失败的话可以通过reject的方式将失败的结果返回出去,通过.catch的方式进行接受,pending状态是进行中,一旦进行之后,他的状态是不可逆的

如果要使用promise,我们需要对promise进行实例化,在实例化的构造函数里面有一个回调函数,这个回调函数里面有那个参数,分别是resolve和reject,我们可以通过promise的实例化对象调用.then或者.catch方式接受结果

promise还给我们提供了.all 和 race, 其中all方法的作用是将多个请求合并成一个请求, 比如当首页要请求10个接口,我们可以promise.all进行合并,.race的作用也可以将多个请求合并成一个请求,不过是谁先请求成功就先返回谁.

promise实例

  // 第一步:先写一个函数
  function fetch ( options ){
         // 第二步:实例化promise
        let p = new Promise(( resolve,reject ) => {
          // 第三步:放一个异步操作,我这里放的的是小程序的请求
             wx.request ({
               url: options.url,
               data: o
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值