js promise的用法
2018-01-23 15:54
155 查看
近期在看模块化开发,然后涉及到了promise这种异步开发模式,于是总结一下,有不足之处,欢迎指正。
在我讲来,promise模式是一个异步编程模式,promise本身就是一个构造函数,实例化时接收一个函数作为参数,这个参数函数又有两个参数,即resolve和reject。
2、promise的出现,可以带来的好处:
便于阅读
用同步模式,编写异步代码,调试时简单、方便
避免回调嵌套,即避免回调地狱
然后调用时:
1.5版本之前: ajax()返回的是XHR对象
1.5版本之后: ajax()返回的是Deffered对象
ajax操作:
非ajax操作:
先定义一个testService文件:
调用时:
同样先定义一个testService文件:
调用时:
首先说一下,什么是promise,为什么会有promise的出现。
1、所谓 Promise,就是一个对象,用来传递异步操作的消息。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的 API,可供进一步处理。在我讲来,promise模式是一个异步编程模式,promise本身就是一个构造函数,实例化时接收一个函数作为参数,这个参数函数又有两个参数,即resolve和reject。
2、promise的出现,可以带来的好处:
便于阅读
用同步模式,编写异步代码,调试时简单、方便
避免回调嵌套,即避免回调地狱
ES6 promise
先定义一个testService文件:function test() { var promise = new Promise(function (resolve, reject){ if (成功) { resolve(data); }else{ reject(err); } }) return promise; }
然后调用时:
testService.test().then(function(){ // 成功则执行该函数 },function(){ // 失败则执行该函数 })
jquery Deffered 对象
在jquery里,ajax函数操作在1.5版本之后都已经重新封装支持了Deffered对象,1.5版本之前: ajax()返回的是XHR对象
1.5版本之后: ajax()返回的是Deffered对象
ajax操作:
$.ajax({url, type..}) .done(// 成功回调) .fail(// 失败回调)
非ajax操作:
先定义一个testService文件:
function test(){ var def = $.Deffered(); if(成功) { def.relsolve(); }else{ def.reject(); } return def; }
调用时:
testService.test().then(function(){ // 成功时执行 },function(){ // 失败时执行 })
angular $q
在angular中也支持promise,需要通过$q这个内置服务,用法如下同样先定义一个testService文件:
function test(){ var def = $q.deffer(); $http.get({type, url}) .then(function(){ def.resolve(data) }, function(){ def.reject(err) }) return def.promise; }
调用时:
testService.test().then(function(){ // 成功时执行 },function(){ // 失败时执行 })
相关文章推荐
- JS Promise用法
- iptables用法初解
- Android Selector 与 Shape 基本用法
- PHP中ini_set与ini_get用法实例
- qsort的用法
- static的用法
- setsockopt 设置socket 详细用法
- Bi Publisher -rtf文档中文字替换的用法-replace
- php异常处理—异常的基本用法
- 信号槽的被连接几次,就会执行几次(有空要仔细研究connect的各种用法)
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- substr(),strstr()函数用法
- ES6,Array.from()函数的用法
- C语言assert()函数用法总结
- OGNL—<s:property>各种用法
- GIT命令行下的常见用法
- java中 Static 用法
- sed基本用法整理
- SQL之case when then用法详解
- 【转】C语言宏高级用法 [总结]