本篇文章将会实现函数链式执行,链式步骤延时等操作。
1.工具类
const executor = (name) => {/*** 执行器名称*/const executorName = name;/*** 方法数组*/const methodArray = [];/*** 同步执行某个方法*/function run(func){methodArray.push(func);return this;}/*** 延时执行某个方法*/function runDelay(func, timeout){const asyncMethod = () => {return new Promise((resolve, reject)=>{setTimeout(()=>{func();resolve(); // 异步执行结束}, timeout);})}methodArray.push(asyncMethod);return this;}/*** 中断执行*/async function execute(){for (let func of methodArray){await func(); // 等待延迟执行结果}}return {run,runDelay,execute}}
延迟执行的时候会将方法封装成延迟方法,通过setTimeout实现延迟执行效果,但是setTimeOut是异步执行的,需要借助async、await等机制等待定时器执行完成。
2.使用样例
executor('demo').runDelay(()=>{console.log('async exec')}, 3000).run(()=>console.log('run')).execute();