【前端学习】—Promise基本知识(十六)

编程入门 行业动态 更新时间:2024-10-27 12:35:56

【前端学习】—Promise<a href=https://www.elefans.com/category/jswz/34/1768060.html style=基本知识(十六)"/>

【前端学习】—Promise基本知识(十六)

【前端学习】—Promise基本知识(十六)

一、class和function的区别

  • 相同点:都可以用作构造函数
  • 不同点:class不可以使用call apply bind的方式来改变它的执行上下文

二、Promise


定义:Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件更合理和更强大。它是由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象

三、代码演示

<script>//3个状态  pending fulfilled rejectednew Promise(function (resolve, reject) {let fullName = "cai";if (fullName === "cai") {resolve(1);} else {reject(2);}}).then(function (value) {console.log(`resolve-value`, value);//resolve-value 1},function (value) {console.log(`reject-value`, value);});</script>
<script>//Promise.prototype.then//可以支持链式调用//then接收的两个函数都是参数//第一个函数是Promise  状态变成fulfilled时候回调函数//第二个函数也是Promise 状态变成rejected的时候调用//返回值也是Promise(新的)new Promise(function (resolve, reject) {let fullName = "lily";if (fullName === "lily") {resolve(1);} else {reject(2);}}).then((value) => {console.log(`fulfilled value`, value);return value + 1;}).then((fulfilledValue) => {console.log(`fulfilled value`, fulfilledValue);},(rejectedValue) => {console.log(`rejectedValue`, rejectedValue);});</script>
//Promise.prototype.catch()捕获promise错误new Promise(function (resolve, reject) {let name = "ll";if (name === "llu") {resolve(1);} else {reject("promise error");}}).then((value) => {console.log(value);}).catch((error) => {console.log(error); //promise error});
 //Promise.prototype.finally()用于指定不管promise对象最后状态如何 都会执行的操作new Promise(function (resolve, reject) {console.log(`loading start……`)let name = "ll";if (name === "llu") {resolve(1);} else {reject("promise error");}}).then((value) => {console.log(value);}).catch((error) => {console.log(error); //promise error}).finally(()=>{console.log(`loading end……`)});
 // Promise.all//用于将多个Promise实例包装成一个新的Promise实例const promiseArray=[1,2,3,4,5].map((item)=>{return new Promise((resolve)=>{resolve(item);})})Promise.all(promiseArray).then(res=>{console.log(`res`,res);})
  // Promise.race方法是将多个promise实例,包装成一个新的Promise实例//Promise.race 继发(挨个发送)//Promise.all并发(多个一起发送)const promiseArray=[1,2,3,4,5].map((item)=>{return new Promise((resolve)=>{resolve(item);})})Promise.race(promiseArray).then(res=>{console.log(`res`,res);//res 1})
// Promise.resolve将现有对象 转换成Promise对象
Promise.resolve(1).then(res=>{console.log(res)//1
})
// Promise.reject 返回一个Promise实例 ——>rejected
Promise.reject('promise error').then(null,rejected=>{console.log(`rejected`,rejected)
})

四、ES6扩展运算符…实现原理

更多推荐

【前端学习】—Promise基本知识(十六)

本文发布于:2023-12-08 08:23:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1672589.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基本知识   Promise   十六

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!