javascript宏命令实现

发表于2018-02-28 00:20 阅读(136)

宏命令是一组命令的集合,通过执行宏命令的方式,可以一次执行一批命令。

想象一下,家里有一个万能遥控器,每天回来的,只要按一个特别的按钮,它就会帮我们关上房间门、打开电脑并登录扣扣。

下边我们看看如何逐渐创建一个宏命令。首先创建各种命令对象,都有一个execute方法:

var closeDoorCommand = {
    execute:function(){
        console.log("关门");
    }
}
var openPcCommand = {
    execute:function(){
        console.log("打开电脑");
    }
}
var openQQCommand = {
    execute:function(){
        console.log("登录QQ");
    }
}

然后定义宏命令macroCommand:

var MacroCommand = function(){
    return {
        commandsList:[],
        add:function(command){
            this.commandsList.push(command)
        },
        execute:function(){
            for(var i=0,command;command=this.commandsList[i++];){
                command.execute();
            }
        }
    }
}
var macroCommand = MacroCommand();
macroCommand.add(closeDoorCommand);
macroCommand.add(openPcCommand);
macroCommand.add(openQQCommand);
macroCommand.execute();

宏命令是命令模式与组合模式的联用产物。

如果各个命令执行都是异步函数,仍需要等到上一个执行完毕,才能执行下一个,该如何实现呢?后续补充。