promise基础知识(面试题)

Promise是ES6引入的异步编程解决方案,用于封装异步操作并获取其结果。它有两个属性:PromiseState(状态)和PromiseResult(内容)。Promise有pending、fulfilled(resolved)和rejected三个状态,状态改变后不可逆。通过resolve和reject切换状态,并通过.then()指定回调处理。then方法内部代码异步执行,允许链式调用并实现回调穿透。catch方法捕获错误。文章通过不同打印结果示例进一步阐述Promise的工作原理。
摘要由CSDN通过智能技术生成

 

语法、promise的两个属性、状态属性的三个值以及规则、then之后的返回值、promise函数同步但是then方法内部代码是异步执行

主要应用是封装ajax操作

Promise是es6引入的异步编程的新的解决方案,通过封装异步操作并可以获取成功或者失败的结果。Promise提供统一的api。Promise对象有两个属性,一个是PromiseState,代表的是状态,一个是PromiseResult,代表的是内容

新建一个promise构造函数,函数接受一个函数作为参数,同时该函数有两个参数,reject和resolve。执行异步操作,成功执行resolve(),状态变成resolved状态;失败执行reject(),状态变成rejected状态。无论成功还是失败都可以通过.then()指定成功和失败的回调函数,catch只能调用失败的回调函数。

promise的三个状态:pending,表示进行中,fulfilled也是resolved,表示成功,rejected,表示失败。只能从pending->resolved或者pending->rejected。构造函数中的 resolve 或 reject 只有第一次执行有效,多次调用没有任何作用,即promise 状态一旦改变则不能再变。

Promise是可以链式回调,而且是可以回调穿透的,回调穿透的意思是可以连续调then方法,只在最后加上catch方法就可以了。

为什么说promise是解决异步编程:在then方法中的内容是异步执行的,即走到then方法之后是可以继续执行和then同级的下编代码,再去执行then里面的代码,所以是实现异步编程。简而言之,执行到then方法之后,不用等到then方法中回调函数执行完毕,就可以继续执行跟then平级的下方的代码。

为什么用promise可以解决异步转同步的问题:Promise函数是同步的,但是then里面的函数是异步的。把promise函数中的resolve或者reject中的代码走完,才会触发then方法中的回调函数。这是promise实现异步转化为同步的关键。简而言之,只有把p函数的内容执行完才能执行then里面的回调。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值