一直用jquery,ajax一直是这么写:

 $.ajax({
url: 'abc.com/index',
type: 'post',
data: { abc:1 },
success: function (data) {
if (!data.success) {
alert(data.message);
} else { }
}
});

前一段时间 看见别人这么写觉得很不错:

  $.ajax({
url: 'abc.com/index',
type: 'post',
data: { abc:1 },
}).done(function(data) {
if (!data.success) {
alert(data.message);
} else {
}
}).fail(function() {
alert('请稍后重试');
});

突然感觉 done fail 这种写法不错....今天在写js的时候想 自定义的方法怎么实现 这种 ?

然后搜索下发现jquery封装了promise对象 只需要这么用:

 function test(txt) {
var dtd = $.Deferred();
if (!txt.trim()) {
dtd.reject({ msg: '不能为空' });
} else if (!reg.test(txt)) {
dtd.reject({ msg: '含有非法字符' });
} else if (this.tags.indexOf(txt)>=0) {
dtd.reject({ msg: '已重复' });
}
    dtd.resolve();
return dtd.promise();
} 调用:
test('xxx')
.done(function(data){
//xxxxxx
})
.fail(function(data){
//xxxx
})

说明 test 方法返回 的是一个promise对象

dtd.reject 会回调所有的 fail 方法

dtd.resolve 会回调 所有的 done方法

Jquery的promise对象的更多相关文章

  1. 用Promise对象封装JQuery的AJAX过程

    let jqPostAjaxPromise = function(param){ return new Promise(function(resolve, reject){ $.ajax({ url: ...

  2. JavaScript异步编程(1)- ECMAScript 6的Promise对象

    JavaScript的Callback机制深入人心.而ECMAScript的世界同样充斥的各种异步操作(异步IO.setTimeout等).异步和Callback的搭载很容易就衍生"回调金字 ...

  3. jQuery的deferred对象学习

    #copy { background-color: lightgreen; padding: 15px; margin: 10px } 一.deferred对象简介 deferred对象是jquery ...

  4. jQuery中异步操作对象Deferred

    以下介绍一下jQuery中Deferred对象的使用: 1. 通过$.Deferred生成一个deferredObj对象; 2. deferredObj.done()指定操作成功时的回调函数; 3. ...

  5. 【转载】学习资料存档:jQuery的deferred对象详解

    我在以前的文章里提到promise和deferred,这两个东西其实是对回调函数的一种写法,javascript的难点之一是回调函数,但是我们要写出优秀的javascript代码又不得不灵活运用回调函 ...

  6. jquery的promise实践--连续加载图片

    在javascript设计模式实践之代理模式--图片预加载中用代理模式实现了图片预加载功能. 现在就更进一步,完成一个能够一张一张的连续图片加载的功能. 功能: 1.一张一张加载图片. 2.加载错误, ...

  7. 谈谈 ES6 的 Promise 对象

    https://segmentfault.com/a/1190000002928371 前言 开篇首先设想一个日常开发常常会遇到的需求:在多个接口异步请求数据,然后利用这些数据来进行一系列的操作.一般 ...

  8. 浅谈Javascript中Promise对象的实现

    https://segmentfault.com/a/1190000000684654 What? Promise是CommonJS的规范之一,拥有resolve.reject.done.fail.t ...

  9. jQuery之Deferred对象详解

    deferred对象是jQuery对Promises接口的实现.它是非同步操作的通用接口,可以被看作是一个等待完成的任务,开发者通过一些通过的接口对其进行设置.事实上,它扮演代理人(proxy)的角色 ...

随机推荐

  1. 安装和破解Quartus Ⅱ 15.0

    http://jingyan.baidu.com/article/b7001fe18d47fc0e7282dd91.html

  2. Problem D: 乌龟棋【四维dp】

    Problem D: 乌龟棋 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 24  Solved: 15[Submit][Status][Web Boa ...

  3. python 面向对象(成员,静态,类)的(变量,方法)区别

    静态方法是使用@staticmethod装饰的方法,并且参数表中不需要self或者cls,可以访问类成员变量 默认的方法是有self的,是成员方法,可以访问私有变量和方法(通过self.xxx),或者 ...

  4. 线段树+Dfs序【CF620E】New Year Tree

    Description 你有一棵以1为根的有根树,有n个点,每个节点初始有一个颜色c[i]. 有两种操作: 1 v c 将以v为根的子树中所有点颜色更改为c 2 v 查询以v为根的子树中的节点有多少种 ...

  5. codeforces 713C C. Sonya and Problem Wihtout a Legend(dp)(将一个数组变成严格单增数组的最少步骤)

    E. Sonya and Problem Wihtout a Legend time limit per test 5 seconds memory limit per test 256 megaby ...

  6. 学习LSM(Linux security module)之三:Apparmor的前世今生和基本使用

    感冒了,感觉一脑子浆糊,真是蛋疼. 先粗略讲一些前置知识. 一:MAC和DAC DAC(Discretionary Access Control),自主访问控制,是最常用的一类访问控制机制,意思为主体 ...

  7. Oracle alter table modify column Syntax example

    http://www.dba-oracle.com/t_alter_table_modify_column_syntax_example.htm For complete tips on Oracle ...

  8. [UOJ164]V

    线段树真是好东西... 每个线段树节点维护四个标记:$a,b,maxa,maxb$,$(a,b)$表示对子树内的所有数执行$x'=\max(x+a,b)$,$maxa,maxb$是历史最大标记,初始时 ...

  9. python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)

    阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_leng ...

  10. Exercise02_15

    import javax.swing.JOptionPane; public class Distance { public static void main(String[] args){ Stri ...