夏天夏 夏天夏
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夏天夏

我也不饶岁月
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • JavaScript

    • JavaScript
    • 虚拟DOM
    • DOM和事件
    • ES6
    • 数组操作
    • JavaScript的深浅拷贝
    • JavaScript的执行
    • JavaScript对象
    • JavaScript类型
    • JS概念
    • js设计模式
    • js深入浅出
    • Promise
      • 优势
      • 特点
      • Promise.all
    • this的指向
    • typescript
  • CSS

  • 框架

  • Node

  • 服务

  • 其他

  • 设计模式

  • web3

  • react

  • 学习笔记
  • JavaScript
夏天夏
2022-05-15
目录

Promise

# Promise

# 简介

MDN长解释:
一个 Promise 对象代表一个在这个 promise 被创建出来时不一定已知值的代理。它让你能够把异步操作最终的成功返回值或者失败原因和相应的处理程序关联起来。这样使得异步方法可以像同步方法那样返回值:异步方法并不会立即返回最终的值,而是会返回一个 promise,以便在未来某个时候把值交给使用者。

短解释
Promise 是一个对象,它代表了一个异步操作的最终完成或者失败。

# 优势

  • 使用链式调用,解决回调地狱
  • 与async/await结合使用编写看起来像同步代码一样的异步代码。
  • 更容易地处理异步代码,使复杂的异步代码更容易编写和维护。

# 特点

  • 对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态
  • 一旦状态改变,就不会再变,Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果

# Promise.all

  • 接受一个数组,数组里面都是promise的实例,如果不是就会调用promise.resolve来将参数转成promise实例
  • 只有数组内所有都是fulfilled的情况下Promise.all才会fulfilled
  • 如果有一个是reject那么Promise.all才会reject
  • 如果作为参数的 Promise 实例,自己定义了catch方法,那么它一旦被rejected,并不会触发Promise.all()的catch方法。
var p1=new Promise(res=>{
    setTimeout(()=>{res(1)},1000)
})
var p2=new Promise(res=>{
    setTimeout(()=>{res(2)},1000)
})
var p3=3
var p4=Promise.resolve(4)
Promise.all([p1,p2,p3,p4]).then((data)=>{
    console.log(data)
}) 
1
2
3
4
5
6
7
8
9
10
11
编辑 (opens new window)
#JavaScript#promise
上次更新: 2023/01/02, 17:45:07
js深入浅出
this的指向

← js深入浅出 this的指向→

最近更新
01
远程办公的个人思考
02-21
02
SEO
01-02
03
NFT的价值
12-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 夏天夏 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式