• Jquery的promise对象


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

     1 $.ajax({
     2                 url: 'abc.com/index',
     3                 type: 'post',
     4                 data: { abc:1 },
     5                 success: function (data) {
     6                     if (!data.success) {
     7                         alert(data.message);
     8                     } else {
     9 
    10                     }
    11                 }
    12             });

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

     1  $.ajax({
     2      url: 'abc.com/index',
     3      type: 'post',
     4      data: { abc:1 },
     5  }).done(function(data) {
     6      if (!data.success) {
     7          alert(data.message);    
     8      } else {
     9      }
    10  }).fail(function() {
    11      alert('请稍后重试');
    12  });

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

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

     1 function test(txt) {
     2     var dtd = $.Deferred();
     3     if (!txt.trim()) {
     4         dtd.reject({ msg: '不能为空' });
     5     } else if (!reg.test(txt)) {
     6         dtd.reject({ msg: '含有非法字符' });
     7     } else if (this.tags.indexOf(txt)>=0) {
     8         dtd.reject({ msg: '已重复' });
     9     }
        dtd.resolve();
    10 return dtd.promise(); 11 } 12 13 调用: 14 test('xxx') 15 .done(function(data){ 16 //xxxxxx 17 }) 18 .fail(function(data){ 19 //xxxx 20 })

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

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

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

  • 相关阅读:
    深入了解css的行高Line Height属性
    Kafka消息队列
    架构图
    清理肠道好方法
    维特根斯坦
    ES查询DSL大于小于写法
    python虚拟环境
    Dockerfile
    flask基本使用
    泛型类多个类型参数的定义
  • 原文地址:https://www.cnblogs.com/rufus-hua/p/5166666.html
Copyright © 2020-2023  润新知