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)不管传递的是 ...
随机推荐
- metasploit练习
复现ms08_067_netapi 使用模块 msf5 > use exploit/windows/smb/ms08_067_netapi 查看配置 msf5 exploit(windows/s ...
- 2-10 就业课(2.0)-oozie:10、伪分布式环境转换为HA集群环境
hadoop 的基础环境增强 HA模式 HA是为了保证我们的业务 系统 7 *24 的连续的高可用提出来的一种解决办法,现在hadoop当中的主节点,namenode以及resourceManager ...
- apk安装失败的25中原因
名称 Value 描述 INSTALL_FAILED_ALREADY_EXISTS -1 已经安装 INSTALL_FAILED_INVALID_APK -2 APK文件是无效的 INSTALL_FA ...
- delphi关闭和禁用Windows服务
function StopServices(const SvrName: string): Boolean; var SCH, SvcSCH: SC_HANDLE; SS: TServiceStatu ...
- 如何形成自己的的绘画风格?/ Bookness插画教程分享
搬运地址 :http://wemedia.ifeng.com/46042525/wemedia.shtml ---------------------------------------------- ...
- 剑指offer自学系列(一)
题目描述:输入n个整数,找出其中最小的k个数,例如,输入{4,5,1,6,2,7,3,8}这8个数字,最小的4个数字是1,2,3,4 题目分析:首先我能想到的是先对数组排序,从小到大,然后直接输出想要 ...
- P1040 有几个PAT
转跳点:
- Windows10 网络图标消失 连接不上网络 的解决方法
[背景]电脑win10的,下载一个软件重启之后网络图标消失,并且无法联网. 参照此解决方法: 原因: [Windows Event Log]服务对应的注册表出现问题,导致无法正常启动,进而导致一些依赖 ...
- centos6.5搭建hadoop单节点
1.添加用户 groupadd hadoop useradd -d /home/hadoop -m hadoop -g hadoop passwd hadoop 修改密码 付给用户sudo权限 ...
- 2.15 使用web 编写一个简单记事本
首先陈列问题 (等待解决): 1. 界面是使用 H5 iframe 标签合并而成的,当窗口化之后点击任务栏,显示的内容会在任务栏的下边 希望可以找其他方式替代 (其他方法不熟练,不能应用) 如图 ...