Promise与Defer认识
1、deffer对象:jquery的回掉函数解决方案;含义是延迟到未来某个点再执行;
$.ajax("test.php") .done(function() { console.log("success"); }) .fail(function() { console.log("fail"); }) |
$.ajax("test.php") .done(function() { console.log("success"); }) .fail(function() { console.log("fail"); }) .done(function() { console.log("success two"); }) |
$.when($.ajax("test.php"), $.ajax("test2.php")) .done(function() { console.log("success"); }) .fail(function() { console.log("fail"); }) |
var dtd = $.Deferred(); // 新建一个deferred对象var wait = function (dtd) { var tasks = function() { alert("执行完毕!"); dtd.resole(); // 改变deferred对象的执行状态从”未完成“改为“已完成”,从而触发done()方法; // dtd.reject(); // 从“未完成”改为“已失败”,触发fail()方法; } setTimeout(tasks, ,5000); return dtd;}$.when(wait(dtd)) .done(function() { console.log("success"); }) .fail(function() { console.log("fail"); }) // dtd.resolve() 可以立即改变状态,5s后再触发多一次 |
var wait = function () { var dtd = $.Deferred(); // 新建一个deferred对象 var tasks = function() { alert("执行完毕!"); dtd.resole(); // 改变deferred对象的执行状态从”未完成“改为“已完成”,从而触发done()方法; } setTimeout(tasks, ,5000); return dtd.promise(); // 返回promise对象};$.when(wait()) .done(function() { console.log("success"); }) .fail(function() { console.log("fail"); }) |
$.Deferred(wait) // 接受一个函数名作为参数,注意是函数名 .done(function() { console.log("success"); }) .fail(function() { console.log("fail"); }) |
var dtd = $.Defferred();var wait = function(dtd) { var tasks = function() { alert("执行完毕!"); dtd.resole(); // 改变deferred对象的执行状态从”未完成“改为“已完成”,从而触发done()方法; } setTimeout(tasks, ,5000);}dtd.promise(wait);wait.done(function() { console.log("success"); }) .fail(function() { console.log("fail"); })wait(dtd); |
Promise与Defer认识的更多相关文章
- 关于defer.promise.then 异步的一个疑问 | 用柯里化做promise | 用递归做promise
疑问:感觉会报错,因为执行到defer.promise.then这时候还没到defer.resolve,因为异步读文件,总归会慢 解答:先执行defer.promise.then,是给callback ...
- promise的学习
为了解决回调地狱的问题,所以出现了promise的设计思想. promise的三种状态: pending 等待状态 resolved 完成状态 rejected 拒绝状态 promise的三种状态,只 ...
- Javascript Promise 学习 (中)
时隔多日,对promise有了多一点点的了解. 最近用angularjs 做开发,所以研究了一下它的 $q 功能不算很强大,算是简化版的 Q.js 参考了一下源码,不过我的等级还差很多... 作为学习 ...
- Node.js最新技术栈之Promise篇
前言 大家好,我是桑世龙,github和cnodejs上的i5ting,目前在天津创业,公司目前使用技术主要是nodejs,算所谓的MEAN(mongodb + express + angular + ...
- 160701、理解 Promise 的工作原理
Javascript 采用回调函数(callback)来处理异步编程.从同步编程到异步回调编程有一个适应的过程,但是如果出现多层回调嵌套,也就是我们常说的厄运的回调金字塔(Pyramid of Doo ...
- 160623、理解 Promise 的工作原理
Javascript 采用回调函数(callback)来处理异步编程.从同步编程到异步回调编程有一个适应的过程,但是如果出现多层回调嵌套,也就是我们常说的厄运的回调金字塔(Pyramid of Doo ...
- jQuery中的Deferred和promise
promise:http://www.alloyteam.com/2014/05/javascript-promise-mode/ 1 jQuery 中的 Deferred 和 Promises : ...
- 【转】angular Ajax请求
1.http请求 基本的操作由 $http 服务提供.它的使用很简单,提供一些描述请求的参数,请求就出去了,然后返回一个扩充了 success 方法和 error 方法的 promise对象(下节介绍 ...
- zepto源码研究 - deferred.js(jquery-deferred.js)
简要:zepto的deferred.js 并不遵守promise/A+ 规范,而在jquery v3.0.0中的defer在一定程度上实现了promise/A+ ,因此本文主要研究jquery v3. ...
随机推荐
- Gevent中信号量的使用
greenlet间同步方法:信号量 1.为什么引入信号量: 2.gevent信号量有哪些: 3.编程实现. 为何引入信号量 信号量是一个允许Greenlet相互合作,限制并发访问或运行的低层次的同步原 ...
- Linux基础知识
1.url中不写端口号,默认就是80端口:本机是127.0.0.1或者localhost 2.用户管理 查看当前用户: id:可以查看当前用户:whoami:查看当前的用户:who:可以查看当前已经登 ...
- console
你所不知道的 Console 2016-12-19 ZHANGXIANGLIANG JavaScript 转自 https://segmentfault.com/a/119000000672160 1 ...
- Debian8.2 安装搜狗输入法
搜狗输入法linux版本的推出,让linux的桌面使用变得更加顺手了,我之前一直就很想体验一下Linux下的搜狗输入法了,不过我对Linux系统使用还是个菜鸟,安装个输入法的简单事情也费了一番功夫. ...
- js 键盘记录实现(兼容FireFox和IE)(转)
主要分四个部分 第一部分:浏览器的按键事件 第二部分:兼容浏览器 第三部分:代码实现和优化 第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydo ...
- 如何在VISIO 2010/2013 中关闭Shape protection(图形保护)
最近在画UML图,用到MS visio 2010, 在使用一些网络查找到的图形的时候发现无法编辑,在网上找了找,翻译了下. Visio 2013 的图形保护功能,可以锁定图形的某些特定属性,使其无法被 ...
- Sql Server如何新建计划任务
打开Sql Server数据库,在管理中找到维护计划功能,右击维护计划选择维护计划向导.如图所示: 打开维护计划向导后,在第一个步骤下输入计划名称. 输入完计划名称后,点击右下角的更改按钮,这里是配置 ...
- 原生JS实现购物车功能
html <div class="catbox"> <table id="cartTable"> <thead> <t ...
- 我的毕业设计——基于安卓和.NET的笔记本电脑远程控制系统
手机端: 电脑端: 答辩完成后会开放代码.
- 为什么.Net要求序列化的类必须有一个无参数的构造函数
刚才用xml序列化器,序列化一个类,结果报错说序列化的类必须带有一个无参的构造函数,好奇怪啊.为什么要有这么苛刻的条件,而且xml序列化还要求序列化的成员是public. 我以前一直觉得序列化器是一个 ...