zoukankan      html  css  js  c++  java
  • 初识Promise

    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 或者 PendingRejected

    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');
    });
    

    (以后待补充)

  • 相关阅读:
    init_machine 在Kernel中被调用的过程
    maven-surefire-plugin的forkMode分析
    执行Maven install或Maven test命令时控制台输出乱码的解决办法
    Maven 中的dependencies与dependencyManagement的区别
    使用maven profile实现多环境可移植构建
    Maven最佳实践:划分模块
    MySQL的登陆错误:ERROR 1049 (42000): Unknown database 'root'
    Java 连接操作 Redis 出现错误
    关闭多个screen
    linux sed 批量替换字符串
  • 原文地址:https://www.cnblogs.com/linjilei/p/5681911.html
Copyright © 2011-2022 走看看