首页IT科技promise sb to do(Promise)

promise sb to do(Promise)

时间2024-05-20 20:49:19分类IT科技浏览337
导读:Promise是什么? 作用:支持链式调用,解决回调地狱问题...

Promise是什么?

作用:支持链式调用,解决回调地狱问题

抽象表达

Promise是一门新的技术(ES6规范)

Promise是JS中进行异步编程的新解决方案 ,旧方案是使用回调函数

具体表达

从语法上来说:Promise是一个构造函数

从功能上来说Promise对象用来封装一个异步操作并可以获取成功失败的结果值

属于异步操作

fs文件模块、数据库操作 、ajax 、定时器

Promise三个状态

pending: 初始状态 ,既不是成功,也不是失败状态 。

fulfilled: 意味着操作成功完成 。

rejected: 意味着操作失败。

状态一旦从pending变为成功或失败就不能再改变了

Promise具体操作

new Promise创建一个实例 //伪代码 let p = new Promise((resolve,reject)=>{ if(成功) { resolve(ok) } else { reject(err) } }) Promise实例有两个保存值的方法:resolve保存成功的值,reject保存失败的值 then方法 ,第一个回调函数value => {}接收resolve保存成功的值,第二个回调函数reason => {}接收错误信息或reject保存的值 p.then(value => { console.log(value) },reason => { console.warn(reason) })

平常使用也可省略第二个参数

p.then(value => { console.log(value) }) catch方法,失败进入该方法 p.catch(err => { console.log(err) }) finally方法 ,无论成功或失败都可以进入该方法 p.finally(err => { console.log(err) })

Promise函数的方法

Promise.resolve() 方法 返回一个成功/失败对象

Promise.reject() 方法 返回一个失败对象

Promise.all()方法

包含n个promise的数组,(promises) =>{} 返回一个新的promises,只有所有成功才成功,只要有一个失败则都失败

let p1 = Promise.resolve(cccc) let p2 = Promise.resolve(cccc2) Promise.all{[p1,p2]}

Promise.race方法

包含n个promise的数组

(promises) =>{} 返回一个新的promises,最终结果是第一个promise执行的结果

如何改变Promise状态

resolve() peding => fulfilled ( resolved) reject() peding=>rejected thow 出问题了

一个promise指定多个成功/失败回调函数 ,都会调用吗?

当promise改变为对应状态时会调用

改变promise状态和指定回调函数谁先谁后

都有可能,正常情况下是先指定回调函数再改变状态,但也可以先改变状态再指定回调 如何先改状态再指定回调?

a.在执行器中直接调用resolve()/reject()

b.延迟更长时间才调用then() 什么时候才能得到数据

如果先指定的回调 ,那当状态发生改变时,回调函数就会调用,得到数据

如果先改变状态 ,那当指定回调时 ,回调函数就会调用,得到数据

promise.then()返回新的promise的结果的状态由什么决定?

then()指定的回调函数执行的结果决定 排出错误 失败 返回结果不是promise对象 成功 返回对象是promise对象 是失败/成功

promise如何串联多个任务

then 返回一个新的promise

promise异常穿透

catch

中断promise链

返回一个padding状态的promise对象

return new Promise(() => {})

手写Promise

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
linux服务器安装ssh(在Linux服务器上安装配置socks5代理的教程)
关闭跳转  ×
关闭跳转  ×
关闭跳转  ×