Promise三种类型

  Constructor

  使用Promise构造器来实例化一个promise对象

  

1 var promise = new Promise(function(resolve,reject){
2     //异步处理
3     //处理结束,成功调用resolve,失败调用reject
4 })

  Instance Method

  promise实例对象处理成功或者失败的回调函数

  

promise.then(onFulfilled,onRejected)
// resolve(成功)回调函数 onFulfilled
// reject (失败)回调函数 onRejected

promise.catch(onRejected)
//reject(失败)时,对异常的处理 onRejected

  Static Method

  Promise作为全局对象还有静态方法

  

Promise.all()
Promise.resolve()
Promise.reject()

 

使用promise对象

  

function getUrl(url){return new Promise((resolve,reject)=>{$.ajax({url:url,method:'get',success:function(res){resolve(res)},error:function(err){reject(err)}})})
}var url = 'http://httpbin.org/get'
getUrl(url).then((res)=>{//处理resolve(成功)的回调
    console.log(res)
}).catch((err)=>{//处理reject(异常)的回调
    console.log(err)
})

Promise静态方法

  Promise.resolve

  • new Promise的快捷方式

      静态方法Promise.resolve(value) 可以认为是 new Promise() 方法的快捷方式

    

Promise.resolve(42).then(function(value){console.log(value);
});

      Promise.resolve(value) 同样返回一个promise对象,并且会使这个对象从pending状态转为resolved状态

  • Thenable

      Promise.resolve静态方法的另一个作用就是将thenable对象转为promise对象,到底什么样的对象能算是thenable的呢,最简单的例子就是 jQuery.ajax(),它的返回值就是thenable的.因为jQuery.ajax() 的返回值是 jqXHR Object 对象,这个对象具有 .then 方法

   

function getUrl(url){return Promise.resolve($.ajax(url))
}
var url = 'http://httpbin.org/get1'
getUrl(url).then((res)=>{console.log(res)
}).catch((err)=>{console.log(err)
})

  Promise.reject

    和Promise.resolve()一样是静态方法,是new Promise()的快捷方式

    

Promise.reject(new Error("BOOM!")).catch(function(error){console.error(error);
});

  

每次调用then都会返回一个新创建的promise对象

  then的错误使用方法  

function badAsyncCall() {var promise = Promise.resolve();promise.then(function() {// 任意处理return newVar;});return promise;
}

  首先在 promise.then 中产生的异常不会被外部捕获,此外,也不能得到 then 的返回值,即使其有返回值。

  由于每次 promise.then 调用都会返回一个新创建的promise对象,应该采用promise chain的方式将调用进行链式化,修改后如下

  

function anAsyncCall() {var promise = Promise.resolve();return promise.then(function() {// 任意处理return newVar;});
}

  

转载于:https://www.cnblogs.com/madlife/p/11294147.html

promise迷你书-读书笔记相关推荐

  1. 《机器学习》(周志华)西瓜书读书笔记

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 第1章 绪论 第2章 模型评估与选择 第3章 线性模型 第4章 决策树 第5章 神经网络 第6章 神经网络 第7章 贝 ...

  2. 花书读书笔记(十一)-应用

    全部笔记的汇总贴:<深度学习>花书-读书笔记汇总贴 一.大规模深度学习 快速的 CPU 实现 GPU 实现:是为图形应用而开发的专用硬件组件. 大规模的分布式实现:数据并行.模型并行.异步 ...

  3. 《Java: The Complete Reference》等书读书笔记

    春节期间读了下<Java: The Complete Reference>发现这本书写的深入浅出,我想一个问题,书中很多内容我们也知道,但是为什么我们就写不出这样一本书,这么全面,这么系统 ...

  4. 20220509数据结构绿书读书笔记

    20220509 数据结构读书笔记 全书目录如下 1.编程原则 2.栈 3.队列 4.链栈&队列 5.回溯 6.列表和串 7.搜索 8.排序 9.表格与信息检索 10.二叉树 11.多叉树 1 ...

  5. 红宝书读书笔记 第八章

    对象.类与面向对象编程 属性的类型 内部属性用两个中括号如[ [ Enumerable ] ] 开发者不能直接访问 数据属性 数据属性:数据属性包含一个保存数据值的位置.值会从这个位置读取,也会写入到 ...

  6. 思维导图操作书 读书笔记

    既然是思维导图的读书笔记,那笔记也就用思维导图来呈现.

  7. 《产品思维》一书读书笔记

    作者简介  · · · · · · 刘飞,资深产品人,滴滴出行司机方向前产品负责人,点我达前产品专家,嘟嘟美甲联合创始人,锤子科技产品经理.在知乎累计446579次赞同,224900人关注," ...

  8. 现代操作系统-原理与实现(下)【银杏书-读书笔记】

    上篇链接戳这里 目录 第7章-进程间通信 多进程协助的目的 进程间通信IPC 数据传递 基于共享内存的消息传递 操作系统辅助的消息传递 控制流转移 单向和双向 同步和异步 超时机制 通信连接管理 直接 ...

  9. python编程入门书-读书笔记之《编程小白的第1本Python入门书》

    本书电子版下载地址:百度网盘 写在前面:你需要这本书的原因 有没有那一个瞬间,让你想要放弃学习编程? 在我决心开始学编程的时候,我为自己制定了一个每天编程1小时的计划,那时候工作很忙,我只能等到晚上9 ...

最新文章

  1. PCI总线和PXI总线的区别
  2. 【Linux多线程】三个经典同步问题
  3. MTK Read/Write IMEI from App
  4. 数据库-优化-案例-count()函数的优化
  5. 【多元域乘法】多项式乘法电路原理及MATLAB详解
  6. 汇编_指令_FLAGS
  7. 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。
  8. Eve-NG-Toolkit
  9. 1090. Highest Price in Supply Chain (25)-PAT甲级真题
  10. Atitit php读取数据库记录集合并循环修改展示//------------------------ini db sys$dbstr = “mysql:host=“ . $mysql_con
  11. sql获取服务器系统时间,sql server 获取系统时间的方法
  12. 18650锂电池保护板接线图_锂电池保护板几种接线方法
  13. 小程序源码:微信智慧外链接致富版微信小程序源码下载,支持多端转换-多玩法安装简单
  14. 努比亚 Z17 mini s (Nubia NX589J) 解锁BootLoader 并刷入recovery ROOT
  15. 关于单向散列hash函数破解 彩虹表的简单理解
  16. java short 写法_Java数据类型short的使用方法
  17. anti-wrinkle_Anti-wrinkle是什么意思
  18. SAP-WEB-GUI无法上传excel问题
  19. U-SEM体验模型——让游戏交互设计的维度更加清晰
  20. Right-BICEP要求设计四则运算2

热门文章

  1. java中的数据结构之HashMap学习
  2. 使用matlab建立Kd-tree及最近邻查询
  3. 关于怎么改变border-bottom 的长度解决方法
  4. 关于设置virtualbox 分辨率使其和系统一样分辨率的方法
  5. 是什么让程序员成了一份苦逼的工作?
  6. 名帖231 张雨 行书《自书诗五十五首》
  7. 服务器端编程心得(三)—— 一个服务器程序的架构介绍
  8. 鬼 谷 子 --常读之
  9. 微信支付-chooseWXPay:fail, the permission value is offline verifying
  10. 【UE4】指数密度高度雾