zoukankan      html  css  js  c++  java
  • 微信小程序 bus.js

    //事件总线的使用
    //准备工作:将此js挂载到app.js中
      // var eventBus = require('utils/bus.js'); //第app.js第一行加入
    
      // this.globalData = { //App({})根下加入
      //   bus: eventBus.eventBus
      // }
    //使用:
      //不管发送方还是接收方都要加入机器人,,js第一行!
      // var app = getApp()
      // var bus = app.globalData.bus
    
      //使用:发送方
      // playing(e) {
      //   bus.emit('playing',e); 
      // },
    
      //使用:接收方
      // bus.on('playing', (data) => {
      //   //监听事件总线的改变
      //   console.log(data)
      // })
    
    
    //创建EventBus对象
    let EventBus = function () {
      console.log("eventbus init...");
    };
    //准备数组容器
    var objBus = [], arrbus = [];
    //添加方法
    EventBus.prototype = {
      obj: {
        set: function (key, action) {
          if (key && action) {
            var map = {};
            map.k = key;
            map.v = action;
            //如果存在,则删除之前添加的事件
            for (var i = 0, busLength = objBus.length; i < busLength; i++) {
              var tempMap = objBus[i];
              if (tempMap.k == key) {
                objBus.splice(i, 1);
              }
            }
            objBus.push(map);
          }
        },
        get: function (key) {
          if (key) {
            for (var i = 0, busLength = objBus.length; i < busLength; i++) {
              var map = objBus[i];
              if (map.k == key) {
                return map.v();
              }
            }
          }
        }
      },
      emit: function (key, data) {
        if (key) {
          for (var i = 0, busLength = arrbus.length; i < busLength; i++) {
            var map = arrbus[i];
            if (map.k == key) {
              return map.v(data);
            }
          }
        }
        return new Promise((resolve, reject) => { resolve() })
      },
      on: function (key, action) {
        if (key && action) {
          var map = {};
          map.k = key;
          map.v = action;
          arrbus.push(map);
        }
      },
      arr: {
        push: function (key, action) {
          if (key && action) {
            var map = {};
            map.k = key;
            map.v = action;
            arrbus.push(map);
          }
        },
        pop: function (key) {
          if (key) {
            for (var i = 0, busLength = arrbus.length; i < busLength; i++) {
              var map = arrbus[i];
              if (map.k == key) {
                map.v();
              }
            }
          }
        }
      }
    }
    var eventBus = new EventBus()
    module.exports = {
      eventBus: eventBus
    }
  • 相关阅读:
    对象与引用
    聊天室小程序
    tcp程序设计--客户端获取服务器输入输出流
    线程小例子--进度条
    线程小例子--控制输出
    ngnix反向代理
    使用vuex管理数据
    vue列表到详情页的实现
    vue-实现一个购物车结算页面
    localstorage本地存储的应用
  • 原文地址:https://www.cnblogs.com/zjazn/p/14674963.html
Copyright © 2011-2022 走看看