初识Promise
2016-07-18 16:58
204 查看
Promise对象
曾经用seajs开发后台管理的时候,矫情的PHPER非要JS内联到HTML文件中,方便他调用内容,还指定了
jQueryFileUpload作为上传插件.
当时看到
jQueryFileUpload的时候,我是懵逼的,竟然要引入这么多JS!还要按照顺序去引入,不能顺序错误!整个人都崩溃了,于是就写出了一下的回调金字塔.
seajs.use('__STATIC__/admin/js/other/jquery/jquery.js',function($){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/load-image.all.js',function(){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/canvas-to-blob.js',function(){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/vendor/jquery.ui.widget.js',function(){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/jquery.iframe-transport.js',function(){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/jquery.fileupload.js',function(){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/jquery.fileupload-process.js',function(){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/jquery.fileupload-image.js',function(){ seajs.use('__STATIC__/admin/js/plugins/jQueryFileUpload/jquery.fileupload-validate.js',function(){ ...... }); }); }); }); }); }); }); }); });
回调金字塔,一层一层的回调,很容易出现问题,导致整个都崩溃掉.为了解决异步编程,ES6提供了
Promise对象.
Promise对象代表一个异步操作,三种状态:
Pending(进行中),
Resolved(已完成)和
Rejected(已失败).
Promise对象的状态变化只有两种,
Pending=>
Resolved或者
Pending和
Rejected
Promise新建后,其内部的代码将直接运行.
var promise = new Promise(function(resolve, reject){ // 创建后 以下代码直接执行. var value = Math.round(Math.random()); console.log('将要输出: 值为' + value); // setTimeout 模拟延迟操作 setTimeout(function(){ if (value === 1) { resolve(value); } else { reject(value); } }, 2000); }); promise.then(function(value){ console.log('值为1'); }, function(){ console.log('值为0'); });
(以后待补充)
相关文章推荐
- cookie单点登录(跨域访问)
- 扩展欧几里德算法求不定方程
- struts2标签详解 .
- Windows svn服务端安装步骤visualSVN
- 安装zookeeper+kafka
- 关系型数据的分布式处理系统MyCAT ——概述和基本使用教程
- 大型网站架构:负载均衡(1)
- Struts2的OGNL标签详解
- React-Native坑1:Invariant Violation:Application 项目名 has not been registered.
- 前端学习
- 重新定义物流快递如何实现跨行业连接
- jsdoc — js注释
- 多态-I(继承实现)
- 【性能测试】性能测试总结<四>
- TreeSet
- 要为成功找方法
- git常用命令
- 菜鸟学Word
- storm笔记
- 从原理上搞定编码-- Base64编码