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

    (以后待补充)

  • 相关阅读:
    shell (3) 磁盘挂载
    QByteArray 内存拷贝异常
    记录QTextEdit
    QTableWidget 使用
    QT 读写xml
    远程工具长时间待机断网解决办法
    qt读写json文件
    QT 资源文件(.qrc)
    error: C1041: 无法打开程序数据库“E:ProjectQtuild-QCaculator-Desktop_Qt_5_14_1_MSVC2017_32_bit-DebugdebugQCaculator.vc.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS
    Vs2019+Qt5.14环境配置,安装qt visual studio tools报错。
  • 原文地址:https://www.cnblogs.com/linjilei/p/5681911.html
Copyright © 2020-2023  润新知