Promise用法总结
new Promise(function(resolve,reject){});
var aPromise = new Promise(function (resolve) {resolve(100); }); var thenPromise = aPromise.then(function (value) {console.log(value); }); var catchPromise = thenPromise.catch(function (error) {console.error(error); }); console.log(aPromise !== thenPromise); // => true console.log(thenPromise !== catchPromise);// => true
getUserByName('xxx').then(function(user){if(imMemoryCache[user.id]){return inMemoryCache[user.id];}return getUserAccountById(user.id); }).then(function(userAccount){});
new Promise(function(resolve,reject){resolve(syncValue); }).then(/*...*/)//可以写成 Promise.resolve(syncValue).then(/*...*/)//一个错误也可以写成 Promise.reject(new Error('...'))
Promise.resolve('foo').then(Promise.resolve('bar')).then(function(result){console.log(result); }); //会被解释为: Promise.resolve('foo').then(null).then(function(result){console.log(result); });
// 写法一 f1().then(function () {return f2(); });// 写法二 f1().then(function () {f2(); });// 写法三 f1().then(f2());// 写法四 f1().then(f2);
promise1.then(function(){return promise2; }).then(function(){return promise3; }).then(function(){return promise4; }).catch(function(err){console.log(err); });
function executeSequentially(promiseFactories){var res = Promsie.resolve();promiseFactories.forEach(function(promiseFactory){res = res.then(promiseFactory);});return res; } //工厂函数只是简单的创建一个promise function promiseFactory(){return createAPromise(); }
//原生版本 function Http(){}Http.prototype = {get:function(opts){return this.ajax(opts);},post:function(){return this.ajax(opts);},ajax:function(opts){return Promise(function(resolve,reject){var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('...');var {url,method,data,async,success,fail} = options;var sendBody = null;var qs = Object.keys(data).reduce(function(cur,pre,index){return pre + '&' + encodeURIComponent(cur) + '=' + encodeURIComponent(data[cur]);},'').slice(1);if(medthod == 'get'){url += '?' + qs;}else if(medhot == 'post'){xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');sendBody = qs || null;}xhr.onreadystatechange = function(){if(xhr.readystate == 4){if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){resolve(xhr,xhr.responseText);}}else{reject(xhr,xhr.responseText);}}xhr.open(method,url,async);xhr.send(sendBody);});} }//jquery版本 function Http(){}Http.prototype = {get:function(opts){return this.ajax(opts);},post:function(opts){return this.ajax(opts);},ajax:function(){return $.ajax(opts);} }
转载于:https://www.cnblogs.com/mengff/p/9646392.html
Promise用法总结相关推荐
- boost::fibers::promise用法的测试程序
boost::fibers::promise用法的测试程序 实现功能 C++实现代码 实现功能 boost::fibers::promise用法的测试程序 C++实现代码 #include <b ...
- promise用法_图解 Promise 实现原理(四):Promise 静态方法实现
作者:Morrain 转发链接:https://mp.weixin.qq.com/s/Lp_5BXdpm7G29Z7zT_S-bQ 前言 Promise 是异步编程的一种解决方案,它由社区最早提出和实 ...
- promise用法_图解 Promise 实现原理(一)—— 基础实现
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/UNzYgpnKzmW6bAapYxnXRQ 作者:孔垂亮 很多同学在学习 Promise 时 ...
- js的promise用法
js中的promise是一个异步编程的解决方案,语法层面上他是一个构造函数,名字为Promise(). 他的作用就是将一个任务task封装为一个Promise类的实例对象,这个对象会将任务自动运行并得 ...
- 浅析Promise用法
浅析Promise用法 要理解Promise要知道没有Promise的回调地狱 如何插入一段漂亮的代码片 Promise语法与then的用法 所谓Promise,简单说就是一个容器,里面保存着某个未来 ...
- ES6 promise 用法小结
ES6 promise 用法小结 Js 是一⻔单线程语言,早期解决异步问题,大部分是通过回调函数进行. 比如我们发送 ajax 请求,就是常见的一个异步场景,发送请求后,一段时间服务器给我们响应,然后 ...
- Promise用法回顾
Promise用法回顾 首先来回顾一下Promise是什么. Promise 是异步编程的一种解决方案,比传统的解决方案回调函数和事件更合理和更强大. 所谓Promise,简单说就是一个容器,里面保存 ...
- vue页面取ajax返回值,Vue前端交互模式、Promise用法(回调地狱)
Promise 概述Promise 是异步编程的一种解决方案,从语法上讲,Promise 是一个对象,从它可以获取异步操作的消息. 优点:可以避免多层异步调用嵌套问题(回调地狱) Promise 对象 ...
- promise用法_Promise的秘密
写在前面 本篇文章将会带大家从分解promise入手,一步步实现一个promise.但阅读之前需要比较熟练地了解了解用法,结合用法看文章可能更容易理解. 结构 先看一下简单的用法. const pro ...
最新文章
- 【C++】容器与继承
- JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
- linux沙箱隔离_Linux沙箱技术介绍
- MYSQL视图用户管理
- 小、快、灵:康宁称雄光通信市场的秘诀
- 改造独立部署(SCD)模式下.NET Core应用程序 dotnet的exe文件启动过程
- 用Hamcrest验证DateTime和日期
- vscode 配置 git (配置、暂存、推送、拉取、免密)
- springmvc+ztree v3实现类似表单回显功能
- Python3.x爬虫教程:爬网页、爬图片、自己主动登录
- linux 解压缩与压缩
- Mac(OS X)下的环境变量配置不生效解决办法
- Maven的生命周期和依赖传递(四)
- 烧牛肉,烧肥肠,泡椒兔,炸胡豆炸豌豆?做法指南
- 计算机无法正常更新,无法完成更新正在撤销更改请不要关闭你的计算机的解决方法...
- android解压rar方法,安卓手机如何解压rar/zip/7z等压缩包 详细图解教程
- Matplotlib输出中文显示问题
- mLife | 朱永官院士提出生态系统微生物组学
- getch(),getche(),getchar()的区别 (综合转)
- linux u盘修复引导文件,centos bootloader安装到u盘后修复方法
热门文章
- 双指针算法(四):力扣 88.合并两个有序数组 | 经典例题
- 阿里云MySQL远程登录异常
- Elasticsearch相关软件安装
- javascript的常见对象总结
- Redis专题-底层数据结构与使用场景
- linux wifi修改频率,Linux Custom CRDA WiFi regulatory.bin和40MHz BW 5GHz频...
- python 登陆网站图片验证_登陆需要密码以及图片验证的网站 如知乎
- 防火墙简单组网方案之双机热备
- 国服被ban咋看_LOL国服十大神人霸哥
- OpenYurt 如何 “0 侵入” 攻破云边融合难点