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

    (以后待补充)

  • 相关阅读:
    计算机图形学的学习资源
    Matlab绘图基础
    Matlab绘图函数一览
    Matlab编程基础
    Python实现对文件夹内文本文件递归查找
    C++预处理详解
    C++的学习资源
    OGRE启动过程详解(OGRE HelloWorld程序原理解析)
    Bullet核心类介绍(Bullet 2.82 HelloWorld程序及其详解,附程序代码)
    windows下Bullet 2.82编译安装(Bullet Physics开发环境配置)
  • 原文地址:https://www.cnblogs.com/linjilei/p/5681911.html
Copyright © 2011-2022 走看看