guqzhou guqzhou
首页
快捷导航
下载站
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN
  • Vercel
  • Netlify
  • Github
GitHub

guqzhou

喜欢所以去追求!
首页
快捷导航
下载站
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN
  • Vercel
  • Netlify
  • Github
GitHub
  • vue2
  • CSS

  • Javascript基础

  • javascript进阶

    • 作用域&&结构&&箭头函数
    • ES6模块化
    • Promise
      • Promise
        • 回调地狱
        • 概念
        • async/await 注意是项
    • EventLoop
    • 深拷贝和浅拷贝
  • typeScipt

  • vue2

  • vue3

  • react

  • vue实战

  • pinia的使用

  • gis

  • 前端文章

  • JavaScript文章

  • Vue文章

  • 小程序开发文章

  • uni-app

  • 学习笔记

  • TaroUI的使用

  • 工具使用

  • 前端
  • javascript进阶
guqzhou
2023-10-07
0

Promise

# Promise

# 回调地狱

多层回调函数相互嵌套就形成了回调地狱

setTimeout(() => {
    console.log('1s后执行')
    setTimeout(() => {
        console.log('2s后执行')
        setTimeout(() => {
            console.log('3s后执行')
        },3000)
    },2000)
},1000)
1
2
3
4
5
6
7
8
9

缺点:

  1. 代码冗余,难以维护
  2. 大量的相互嵌套,代码可读性差

# 概念

# 1. Promise是一个构造函数

  • 我们可以创建Promise实例,const p = new Promise()
  • new出来的实例对象代表异步操作

# 2. Promise.prototype上包含一个.then()方法

  • 每一次new出来的实例对象都可以通过原型链的方式访问到.then()方法

# 3.then()方法用来预先指定成功和失败的回调函数

  • p.then(成功的回调函数,失败的回调函数)
  • p.then(res =>{}, err => {})
  • 成功的回调函数必传的,失败的回调可选的

总结:promise是一个构造函数,因此我们可以用new关键字去创建它的实例对象,new出来的实例对象就代表异步操作,而且它的原型对象上包含一个.then方法,我们就可以通过new出来的实例对象去调用实例方法。预先去指定成功和失败的函数。

# .then() 方法的特性

如果上一个.then()方法中返回一个promise实例对象,则可以通过.then()方法进行链式调用解决回调地狱的问题
我们通过.then()的方法指定成功后的回调函数,但我们拿到成功后的回调函数后再返回一个新的promise()对象,用.then()方法指定成功回调函数,拿到第成功后的回调函数的返回值后再返回一个promise实例,用.then()的链式调用方法就能解决回调地狱的问题 all、 race并发请求

# async/await 注意是项

在async方法中,第一个await之前的代码回同步执行,await之后的代码会异步执行

console.log('A')
async function getData () {
    console.log('B')
    const p = await new Promise()
    console.log('C')
    console.log('D')
}
getData()
console.log('E')

// 执行结果 A B E C D
1
2
3
4
5
6
7
8
9
10
11
上次更新: 2023/10/22, 16:10:00
ES6模块化
EventLoop

← ES6模块化 EventLoop →

最近更新
01
面向对象
01-05
02
typescript用localStorage封装过期时间
01-05
03
npm、pnpm、yarn删除文件缓存
12-14
更多文章>
Theme by Vdoing | Copyright © 2021-2024 guqzhou | 萌ICP备20238188号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式