promise核心 为什么用promise
为什么要用promise
1.使用纯回调函数
先指定回调函数,再启动异步任务
答 1.指定回调函数的方式更加灵活
可以在执行任务前,中,后
2.支持链式调用,解决回调地狱问题
什么是回调地狱:回调函数嵌套使用,下一层回调函数依赖上一层回调函数的结果
解决方案。promise链式
终极解决方案 async/await
async function request() {
try {
const result = await dosongthing()
const newResult = await doThirdThing(result)
const finalResult = await doThirdThing2(newResult)
} catch (error) {
failureCallback(error)
}
}
如何使用promise?搞清楚语法(API:前后接口)
定一个函数,就是定义一个api。因为就是一个语法
1.Promise构造函数:Promise(excutor){}
excutor函数: 同步执行 (resolve, reject) => {}
resolve函数: 内部定义成功时候我们调用的函数 value => {}
reject函数: 内部定义失败时候我们调用的函数 reason => {}
说明: excutor会在Promise呢句立即同步调用,异步操作在执行器中执行
2.Promise.prototype.then方法 (onResolved,onRejected)=> {}
onResolved函数:成功时候回调的函数 (value)=> {}
onRejected函数:失败时候回调的函数 (reason)=> {}
返回一个新的promise对象 // 链式调用的一个前提
//内部函数异步执行
3.Promise.prototype.catch方法 (onRejected)=> {}
onRejected函数:失败时候回调的函数 (reason)=> {}
相当于then(null,onRejected)=> {}
new Promise((a, b) => {
setTimeout(() => {
// a('ok')
b('fail')
}, 0)
}).then(
value => {
console.log('onResolved1', value)
}
).catch(
reason => {
console.log('onReject', reason)
}
)
4.Promise.all方法 (promise)=> {}
promise: 包含n个promise的数组
//返回一个promise对象
三个请求都成功才有显示 成功
5.Promise.race方法 (promise)=> {}
promise: 包含n个promise的数组
只看第一个先执行完
promise核心 为什么用promise的更多相关文章
- promise核心6 自定义promise
1.定义整体结构(不写实现) 定义一个自己的promise的库 lib(库的简写) 一个js文件.一个js模块(不能用es6 也不能commjs)(用es5模块语法 ) 匿名函数自调用.IIFE ( ...
- Promise核心原理解析
作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... Promises对象被用于表示一个异步操作的最终完成 (或失败), 及其结果值.主要 ...
- Promise核心实现
核心 构造函数核心 维护状态变量,只能由pending变为resolve或者reject 维护一个存储结果的变量 维护一个回调数组,执行到then,如果我们传入的立即执行函数没有立即执行resolve ...
- promise 核心 几个小问题
1.如何改变pending的壮体 抛出异常.pending变为rejected // throw new Error('fail') 内部抛出异常也这样 reason为抛出的error resol ...
- Promise核心基础
基础 Promise 抽象表达:是js中进行异步编程的新的解决方案 具体解释:1.从语法上来说是一个构造函数 2.从功能上来说promise对象用来封装一个异步操作并可以获取其结果 状态改变:0.ne ...
- 手写一款符合Promise/A+规范的Promise
手写一款符合Promise/A+规范的Promise 长篇预警!有点长,可以选择性观看.如果对Promise源码不是很清楚,还是推荐从头看,相信你认真从头看到尾,并且去实际操作了,肯定会有收获的.主要 ...
- 到底什么是promise?有什么用promise怎么用
相信很多人刚接触promise都会晕,但学会后却离不开它,本文详细介绍一下promise,promise解决的问题,帮助新手快速上手 [扫盲] 什么是promise? promise是一种约定,并非一 ...
- 一步一步实现一个Promise A+规范的 Promise
2015年6月,ES2015(即ES6)正式发布后受到了非常多的关注.其中很重要的一点是 Promise 被列为了正式规范. 在此之前很多库都对异步编程/回调地狱实现了类 Promise 的应对方案, ...
- Promise.resolve( data)与Promise.reject( data )
Promise.resolve( data)与Promise.reject( data ) 常用来生成已经决议失败或成功的promise实例: 1.Promise.reject(data)不管传递的是 ...
随机推荐
- 解题报告:luogu P3853 [TJOI2007]路标设置
题目链接:P3853 [TJOI2007]路标设置 是个水二分,那你还\(WA\).很简单,就是练了练和早上那题相似的题. 二分答案即可,复杂度\(O(Nlogl)\),可以通过本题. 不过,需要注意 ...
- python集成开发环境Anaconda的安装
参考博文: anaconda在Linux下的安装 Linux下anaconda3的安装 Anaconda的安装.启用及停用的步骤 Python学习之Anaconda的使用及配置方法 Anaconda ...
- 060、Java中定义有返回值有参数的方法
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- SmartAssembly .net混淆后,无法找到部分类型
两种解决方式: 1,在vs项目引用中,COM 嵌入互操作类型, 全部设为false. 2, 在混淆选项中,排除所有 引有的 外部COM类
- 数据库连接需要dll
连接oracle引用: Oracle.ManagedDataAccess.dll和Oracle.ManagedDataAccess.EntityFramework.dll, 连接sqlserver 连 ...
- STM32之GD25Q256应用笔记
前言 使用标准SPI指令格式: 3字节地址模式或4字节地址模式: 支持SPI 总线 模式0 和 模式3: 存储容量32MB: 时钟频率范围:80Mhz – 104Mhz: 主机:STM32F103ZE ...
- 6 —— node —— 响应一个完整的页面
const http = require('http'); const fs = require('fs'); const server = http.createServer(); server ...
- web.xml中的classpath是啥
在web.xml中一个很面熟的字:classpath,它到底是个啥? <servlet> <servlet-name>dispatcherServlet</servlet ...
- while循环和do-while循环语句
while 语句 条件表达式的结果是一个 boolean 值,如果为true,则执行循环体:如果为 false,循环就会结束. while 循环体是一个代码块,所以 while 循环是可以嵌套其他的语 ...
- Bulma CSS - 模块化
Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 Bulma框架 ...