1.理解

抽象表达:
Promise 是JS 中进行异步编程的新的解决方案

具体表达:

  • 从语法上来说:Promise 是一个构造函数

  • 从功能上来说:promise对象用来封装一个异步操作并可以获取其结果

2.promise 的状态改变

  1. pending 变为 resolved
  2. pending 变为 rejected
    说明: 只有这2种,且一个promise对象只能改变一次
    无论变为成功还是失败,都会有一个结果数据
    成功的结果数据一般称为vlaue,失败的结果数据一般称为reason

3.promise的基本流程

4.promise的基本使用

//语法
// new Promise( function(resolve, reject) {...} /* executor */ );
//参数
/*
executor是带有 resolve 和 reject 两个参数的函数 。Promise构造函数执行时立即调用executor 函数,
resolve 和 reject 两个函数作为参数传递给executor(executor 函数在Promise构造函数返回所建promise实例对象前被调用)。
resolve 和 reject 函数被调用时,分别将promise的状态改为fulfilled(完成)或rejected(失败)。
executor 内部通常会执行一些异步操作,一旦异步操作执行完毕(可能成功/失败),要么调用resolve函数来将promise状态改成fulfilled,
要么调用reject 函数将promise的状态改为rejected。如果在executor函数中抛出一个错误,
那么该promise 状态为rejected。executor函数的返回值被忽略。
*/
// 1. 创建一个新的promise对象
const p = new Promise((resolve, reject) => {// 执行器函数
// 2.执行异步操作任务
setTimeout(()=> {
const time = Date.now()// 如果当前时间是偶数就代表成功,否则代表失败
// 3.1. 如果成功了,调用resolve(value)
if(time %2 == e){
resolve('成功的数据,time=' + time)
) else {
//3.2.如果失败了,调用reject(reason)
reject('失败的数据,time='+ time)
),1000);
});
p.then(
value => { //接收得到成功的value数据 onResolved
console.log('成功的回调', value)
},
reason => {// 接收得到失败的reason数据 onRejected
console.log('失败的回调', reason)
}
)

最新文章

  1. android app反编译
  2. 解决 SVN Skipped 'xxx' -- Node remains in conflict
  3. maven 跳过测试 打包 及上传命令
  4. IOS第二天多线程-02一次性代码
  5. [C++] 井字棋游戏源码
  6. 关于netbeans中的JComboBox(复选框)
  7. Codeforces Round #263 (Div. 2)
  8. 关于删除7z历史解压路径
  9. ArrayList和LinkedList源码
  10. Java----list常用方法汇总
  11. Redis 设计与实现 (六)--发布订阅
  12. MTK USER版本禁止log输出
  13. 从composer上在本地创建一个项目
  14. 将DOS格式的shell脚本转为UNIX格式
  15. httpclient新旧版本分割点4.3
  16. Spring-data-JPA详细介绍
  17. canvas 使用 isPointInPath() 判断鼠标位置是否在绘制的元素上
  18. IIS中“绑定”,“IP地址全部未分配”到底是个什么玩意
  19. Total Commander如何设置自定义快捷键在当前目录打开ConEmu
  20. 百度乐播音乐真实地址查找api接口

热门文章

  1. jqGride的基本使用
  2. nginx负载轮询
  3. P4424-[HNOI/AHOI2018]寻宝游戏【结论】
  4. WPF进阶技巧和实战06-控件模板
  5. T-SQL——数据透视和逆透视
  6. 在昨天夜黑风高的晚上,我偷了隔壁老王的Python入门课件,由浅入深堪称完美!
  7. java多线程--wait和sleep
  8. Python - __all__ 变量
  9. caffe运行错误 target_blobs.blobs_size()与 source_layer.blobs_size() 不一致
  10. 干货分享之Spring框架源码解析01-(xml配置解析)