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)不管传递的是 ...
随机推荐
- 浅析 URL
浅析 URL 参考于维基百科 URL => Uniform Resource Locator : 统一资源定位符 统一资源定位符的标准格式如下: [协议类型]://[服务器地址]:[端口号]/[ ...
- zabbix java gateway配置实战案例
zabbix java gateway配置实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署tomcat服务 博主推荐阅读: CentOS: https://www. ...
- Codeforces 546 E:士兵的旅行 最大网络流
E. Soldier and Traveling time limit per test 1 second memory limit per test 256 megabytes input stan ...
- brew services start redis 无法使用问题排查
起因 Mac上使用brew services start --all指令同时启动多个服务显示成功 但是,连接四个服务所在端口均无响应. 仔细核对过brew指令启动服务使用的路径.配置文件路径均无问题. ...
- Program-Language
1. 主流编程语言 2. 编程语言分类 2.1 编译or解释 2.2 按照客观系统的描述可分为两类 2.3 按照编程范型可分为 3. 语言范式 Paradigm 4. 计算机语 ...
- 说说mysql和oracle他门的分页查询,分别是怎么实现的?
MySQL: 1.MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了. 2.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两 ...
- bzoj 1138: [POI2009]Baj 最短回文路
额,,貌似网上的题解都说超时之类的. 然而我这个辣鸡在做的时候不知道在想什么,连超时的都不会. 超时的大概是这样的,f[x][y]表示x到y的最短回文路,然后更新的话就是 f[x][y]更新到 f[a ...
- ubuntu18.04.2 Hadoop伪集群搭建
准备工作: 若没有下载vim请下载vim 若出现 Could not get lock /var/lib/dpkg/lock 问题请参考: https://jingyan.baidu.com/arti ...
- Java Break 与 Continue
章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...
- POJ 1472:Instant Complexity 模拟时间复杂度
Instant Complexity Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1908 Accepted: 658 ...