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

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

一、class和function的区别

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

二、Promise

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

三、代码演示

<script>
        //3个状态  pending fulfilled rejected
      new 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扩展运算符…实现原理


相关文章
|
5天前
|
前端开发 JavaScript 开发者
前端开发中的异步编程:Promise 和 Async/Await 的比较与应用
在现代前端开发中,异步编程是不可或缺的技术。本文将深入探讨Promise和Async/Await这两种主流的异步编程方式,分析它们的优劣势及在实际项目中的应用场景。通过比较它们的语法、可读性和错误处理机制,帮助开发者更好地选择和理解如何在项目中高效地利用这些技术。
|
2月前
|
前端开发
从零开始学习前端开发:HTML基础
HTML是前端开发的基础,它是网页内容的结构化描述语言。本文将介绍HTML的基本语法、标签和元素,以及如何使用它们来创建简单的网页。
|
1天前
|
前端开发 安全 JavaScript
学习前端加密
【7月更文挑战第3天】前端加密保护数据安全,防止传输中被截获,提升用户体验。HTTPS基础保障,JavaScript库如CryptoJS辅助加密,Web Crypto API提供原生加密功能。但前端加密非万能,需结合后端措施,注意算法选择、密钥管理。
6 2
|
3天前
|
前端开发 JavaScript 测试技术
前端 JS 经典:Promise 详解
前端 JS 经典:Promise 详解
6 1
|
10天前
|
移动开发 前端开发 JavaScript
前端学习加速器:高效软件工具与实用设置攻略
前端学习加速器:高效软件工具与实用设置攻略
前端学习加速器:高效软件工具与实用设置攻略
|
17天前
|
前端开发 JavaScript 开发工具
Web前端开发学习资料:深度探索与开发实践
Web前端开发学习资料:深度探索与开发实践
21 3
|
4天前
|
JavaScript 前端开发 Java
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(二)
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(二)
|
4天前
|
前端开发 数据安全/隐私保护
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(一)
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(一)
|
4天前
|
JavaScript 前端开发
前端学习核心框架Vue2基础入门+实战教程
前端学习核心框架Vue2基础入门+实战教程
|
1月前
|
前端开发
前端基础学习(一)HTML入门
前端基础学习(一)HTML入门
14 0
前端基础学习(一)HTML入门