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

(以后待补充)

初识Promise的更多相关文章

  1. JavaScript 初识Promise 对象

    什么是Promise? 其实, Promise就是一个类,而且这个类已经成为ES6的标准,是 ECMAScript 6 规范的重要特性之一.这个类目前在chrome32.Opera19.Firefox ...

  2. 10慕课网《进击Node.js基础(一)》初识promise

    首先用最简单的方式实现一个动画效果 <!doctype> <html> <head> <title>Promise animation</titl ...

  3. [20190620]日常学习记录(三)-初识promise及vuex

    在学习promise之前重温了Ajax的原生js实现, 在原生js中发送一个http请求首先new XMLHttpRequest() 然后定义状态变更事件 浏览器监听请求的状态,触发不同状态下相应的代 ...

  4. JavaScript进阶之路——认识和使用Promise,重构你的Js代码

    一转眼,这2015年上半年就过去了,差不多一个月没有写博客了,"罪过罪过"啊~~.进入了七月份,也就意味着我们上半年苦逼的单身生活结束了,从此刻起,我们要打起十二分的精神,开始下半 ...

  5. 一篇文章彻底搞懂es6 Promise

    前言 Promise,用于解决回调地狱带来的问题,将异步操作以同步的操作编程表达出来,避免了层层嵌套的回调函数. 既然是用来解决回调地狱的问题,那首先来看下什么是回调地狱 var sayhello = ...

  6. HTML5学习笔记(十九):Lambda和Promise

    Lambda 在ES6的标准中称为Arrow Function(箭头函数).下面是一个简单的箭头函数: x => x * x 上面的定义和下面的代码定义效果一样: function (x) { ...

  7. 07慕课网《进击Node.js基础(一)》HTTP小爬虫

    获取HTML页面 var http = require('http') var url='http://www.imooc.com/learn/348' http.get(url,function(r ...

  8. 初识 ServiceWorker

    初识ServiceWorker 初识ServiceWorker 在8月份的时候.W3C更新了一个叫Service Workers的API. 了解过HTML5中的Web Worker的人可能会对这个AP ...

  9. PHP下的异步尝试四:PHP版的Promise

    PHP下的异步尝试系列 如果你还不太了解PHP下的生成器和协程,你可以根据下面目录翻阅 PHP下的异步尝试一:初识生成器 PHP下的异步尝试二:初识协程 PHP下的异步尝试三:协程的PHP版thunk ...

随机推荐

  1. js 常用方法

    1: 五秒后跳出提示框 setTimeout("alert('已经过了五秒了')",5000) 2:  十秒后自动关闭窗口 <script language="ja ...

  2. VS2013 统计代码量(使用正则表达式)

    年尾了,需要统计一下今年各个项目的工作量,统计一下各个项目的代码行数: 具体操作步骤如下: 1.选中解决方案,快捷键:Ctrl+Shift+F,打开搜索框,在查找内容中输入正则表达式:"b* ...

  3. [转]C/C++ 实现文件透明加解密

    今日遇见一个开超市的朋友,真没想到在高校开超市一个月可以达到月净利润50K,相比起我们程序员的工资,真是不可同日而语,这个世道啊,真是做程序员不如经商开超市, 我们高科技的从业者,真是造原子弹不如卖茶 ...

  4. Code Page 编码

    Identifier .NET Name Additional information 037 IBM037 IBM EBCDIC US-Canada 437 IBM437 OEM United St ...

  5. spring mvc 用freemarker实现/user/edit?id=${id}=${type} 的替换

    java 中实现/user/edit?id=${id}=${type} 的替换; 引入包: freemark.jar  ,以及 类代码如下: public class FreeMarkerTextTe ...

  6. WinRAR压缩操作帮助类

    //------------------------------------------------------------------------------------- // All Right ...

  7. InfoPath中用户数据类型结构解析

    由于缺少对“用户”数据类型结构的明确定义,在设计InfoPath表达式时往往会耗用大量时间尝试,而且不一定能得到期望结果.下面对用户数据类型的结构进行详细解析. >> 什么是用户数据类型 ...

  8. Google Developing for Android 三 - Performance最佳实践

    Google Developing for Android 三 - Performance最佳实践 发表于 2015-06-07   |   分类于 Android最佳实践 原文 Developing ...

  9. Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)

    1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...

  10. iOS设计模式笔记

    设计模式 所谓设计模式,就是经过无数程序员的努力,在很多代码的基础上抽取出来的"模式" 一种设计模式,通常用来解决一种问题 MVC体系架构 也是一个设计模式,主要解决:界面(V), ...