[JS]Promise
时间:2021-08-09
本文章向大家介绍[JS]Promise,主要包括[JS]Promise使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Promise 状态
Promise 是一个对象,表示异步操作的结果。它有一个 [[PromiseState]] 属性,表示当前的状态,状态有两种,即 pending 和 fulfilled 以及 rejected。
在异步任务完成之前,Promise 的状态是 pending,即等待状态中。根据异步任务完成的情况改变 fulfilled 或 rejected。
异步任务成功时调用 resolve,并改变 Promise 的状态为 fulfilled ;失败时调用 reject,并改变 Promise 的状态为 rejected 。
Promise 可以做什么?请转至[JS]回调函数和回调地狱 - 回调地狱一文,了解 Promise 能够解决什么问题。
resolve
resolve 即在异步任务成功时调用。它还可以携带一条成功消息给 then() 函数。
new Promise((resolve, reject) => {
resolve('success')
}).then((r) => {
console.log(r) // => 'success'
})
reject
reject 即在异步任务失败时调用。它可以携带一条错误消息给 then() 或者 catch() 函数。
new Promise((resolve, reject) => {
reject('failed')
}).then(
(r) => {},
(e) => {
console.log(e) // => 'failed'
}
)
Promise 链
Promise 允许链式异步操作,无需把每个操作嵌套在前一个操作的回调内部,因此 Promise 可以解决回调地狱的问题。
function asyncFn() {
return new Promise((resolve, reject) => {
resolve('success')
})
}
asyncFn()
.then((res) => {
return asyncFn()
})
.then((res) => {
return asyncFn()
})
.catch((error) => {
console.log(error)
})
并行 Promise
Promise 提供的静态方法 all() 可以并行执行任意数量的 Promise。
function asyncFn() {
return new Promise((resolve, reject) => {
resolve('success')
})
}
Promise.all([asyncFn(), asyncFn()])
.then((res) => {
console.log(res) // ["success", "success"]
})
.catch((error) => {
console.log(error)
})
原文地址:https://www.cnblogs.com/shiramashiro/p/15120045.html
- 并发编程之Executor,Executors,ExecutorService和ThreadPoolExecutor
- 【DeveMobile实例】d3.js 与Trianglify 制作SVG格式Low-Poly 特效
- 未来人工智能将把人类分为3层,而你会在哪一层呢?
- IIS 7.0探索用于 Windows Vista 的 Web 服务器和更多内容
- 初学Python 之抓取当当网图书页面目录并保存到txt文件
- JavaScript 基础(二)数组
- 限制扫码付款额度,支付宝和微信要被“祭旗”?
- 拖动条SeekBar及星级评分条
- 【DeveMobile实例】利用Mobile Detect 制作单独移动端页面项目
- 互联网+智能物流高峰论坛举行运的易现场签约完成战略布局
- Quartz.net通过配置文件来完成作业调度
- JavaScript 基础(一)
- 我也来说说.net开源
- 是时候对员工进行网络安全培训了:黑客正将目标瞄准打印机
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python数据可视化 豆瓣电影top250数据分析
- R语言实现分子信息获取
- iOS App冷启动治理:来自美团外卖的实践
- LeetCode刷题DAY 37:组合总合
- 利用scipy计算定积分
- 关于设计模式的那些事(一)
- 你在小程序中怎么计算两个经纬度的距离?
- 权限-Linux每日一练(5)
- Go 每日一库之 commonregex
- Python编程 基础练习(三)
- Python 图像数组变换及手绘效果实现
- 爬取TIOBE编程语言热度数据 + Pyecharts绘制时间轮播图
- Python 简单实现贪吃蛇小游戏
- Python数据可视化 词云图 绘制词云的方法总结
- Python 利用OpenCV给照片换底色