2019年底

Posted paxster

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019年底相关的知识,希望对你有一定的参考价值。

// 简易版emit/on
function Pubsub(){
     //存放事件和对应的处理方法
    this.handles = {};
 }
 Pubsub.prototype={
     //传入事件类型type和事件处理handle
     on: function (type, handle) {
         if(!this.handles[type]){
             this.handles[type] = [];
         }
         this.handles[type].push(handle);
     },
     emit: function () {
         //通过传入参数获取事件类型
        var type = Array.prototype.shift.call(arguments);
        console.log(type, ‘type‘);
         if(!this.handles[type]){
             return false;
         }
 for (var i = 0; i < this.handles[type].length; i++) {
             var handle = this.handles[type][i];
             //执行事件
            console.log(handle, ‘handle‘, arguments);
            handle.apply(this, arguments);
         }
     },
     off: function (type, handle) {
         handles = this.handles[type];
         if(handles){
             if(!handle){
                 handles.length = 0;//清空数组
            }else{
 for (var i = 0; i < handles.length; i++) {
                     var _handle = handles[i];
                     if(_handle === handle){
                         handles.splice(i,1);
                     }
                 }
             }
         }
     }
 }

 var p1 = new Pubsub();
 p1.on(‘mm‘, function (name) {
     console.log(‘mm: ‘+ name);
 });
 p1.emit(‘mm‘,‘哈哈哈哈‘);


// 洋葱圈模型
// 实现方式一
function compose (middleware) {
   return async function () {
      let args = arguments
      await dispatch(0)
      function async dispatch (i) {
         const fn = middleware[i]
         if (!fn) return null
         await fn(function next () {
            dispatch(i + 1)
         }, ...args)
      }
   }
}
// 实现方式二
function compose(middlewares=[fn1,fn2,fn3])
{
    function dispatch(i)
    {
        let fn=middlewares[i]
        if(!fn){
            return Promise.resolve()
        }
        else
        {
            return new Promise((resolve)=>{
                resolve(fn(function next () {
                    return dispatch(i + 1)
                }));
            });
        }
    }
    return dispatch(0);
}

  

以上是关于2019年底的主要内容,如果未能解决你的问题,请参考以下文章

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

2019年年底总结

送给迷茫的昨天(2019年底至2020年初)

十七年运维老兵万字长文讲透优维低代码~

AGP 3.3 和 Gradle 5.0 对已过时且将于 2019 年底删除的变体发出警告

片段更改崩溃