发布订阅实现异步
let obj = {
// 存放所有的订阅方法。
funcArray: [],
// 用于订阅,执行它会把要订阅的方法存放到方法集合中
on (func){
this.funcArray.push(func);
},
// 发布,该方法会把订阅的方法挨个的执行一次,执行的过程中不断地去判断是否满足某个条件
fire (){
this.funcArray.forEach(func =>
{
func.apply(this,arguments)
}
);
}
};
//有订阅就会触发该函数
//name就是该异步执行的标识 例如接口的名称
//data为接口返回数据
obj.on((name, data) => {
switch(name){
case 'login':
/**代码块**/
console.log(data)
break;
case 'add':
/**代码块**/
break;
default:
/**代码块**/
console.error('接口对应的名称不正确')
}
});
setTimeout(()=>{
obj.fire('login', {'error':'0','msg':'登录成功'});
}, 2000);