machine
的函数:1 | /** |
1 | machine('machine').waitFirst(3).do('eat').do('run').wait(5).do('sleep').execute() |
proxy
获取到每一次的动作, 将每一次的函数存放到一个函数list 数组中, 当执行 execute
的时候, 依次执行数组中的函数, 在执行过程中进行判断, 当判断为 wait
或者 waitFirst
函数的时候, 等待 wait
或者 waitFirst
函数执行完毕之后执行:1 | // 对于 wait 或者 waitFirst 函数执行完毕之后返回了一个 promise |
proxy
进行拦截处理:1 | proxy = new Proxy(doFnMap, { |
Proxy
方法用于对一个对象的属性访问和获取进行拦截, 在上面的代码中, 使用 proxy
中的 get
方法,设置了当调用 doFnMap
中的方法的时候, 调用get
方法,在 get
方法中, 可以用来将将要执行的函数方法推入到函数数组列表中以及调整函数的执行顺序。