• 防抖和节流


    1、第一个案例

     debounce(dispatch({
          type: 'subTask/getSubTaskUrls',
          payload: { name: v }
        }), 1000);
    function debounce(fn, wait) {
      var timeout = null;
      return function() {
        if(timeout !== null) clearTimeout(timeout);
        timeout = setTimeout(fn, wait);
      }
    }

    2、第二个案例

    export function fusionDebounce(action, idle) {
      let timer;
      return function() {
        // tslint:disable-next-line: no-this-assignment
        const context = this;
        const args = arguments;
        return new Promise((resolve, reject) => {
          clearTimeout(timer);
          timer = setTimeout(() => {
            action.apply(context, args)
              .then(r => {
                resolve(r);
              })
              .catch(err => {
                reject(err);
              });
          }, idle);
        });
      };D
    }
    <FormItem
    label='子任务名称:'
    required
    hasFeedback
    requiredMessage='请输入子任务名称'
    validator={fusionDebounce(this.titleExists, 1000)}
    >
     
     
    titleExists = (rules, value) => {
    const { subTask: { tmpName } } = this.props;
    const { location: { query: { editType = '0' } } } = this.props.history;
    return new Promise((resolve, reject) => {
    if (value.length > 20) {
    reject([new Error('任务名称不能大于20')]);
    }
    if (editType === '1' && value === tmpName) {
    resolve();
    return;
    }
    checkDupName(value).then(r => {
    if (r.result === true) {
    reject('该子任务名称已被使用');
    return;
    }
    resolve();
    }).catch(err => {
    Message.error('网络出错');
    });
    });
    };
     
     
  • 相关阅读:
    angular ngIf指令 以及组件的输入输出
    angular 命令行指令总结
    angular8.x 事件的处理和样式绑定
    nodejs更新版本(windows)
    angular重要指令 ngFor
    emmet 常用总结
    手机真机调试 (ng项目)
    最长回文子串
    最长连续序列
    重复的子字符串
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15839993.html
Copyright © 2020-2023  润新知