如何编写一个arrange 函数

/**
 * @description 链式调用的方法
 * @param {*} taskIs 
 * @example 
 * arrange('arrage').waitFirst(2).do('吃西瓜').do('吃西瓜2').execute()
 * @returns {execute, do, wait, waitFirst}
 */
复制代码
export const arrange = (taskIs) => {
    const tasks = []
    tasks.push(() => {
      console.log(`${taskIs} IS UNDEFINED`);
    })
    async function execute(){
      for(const t of tasks){
        await t()
      }
    }
    function doSomething(someThing){
      tasks.push(() => {
        console.log(`start to ${someThing}`);
      })
      return this
    }
    function wait(dur){
      tasks.push(() => new Promise(resolve => {
          setTimeout(resolve, dur*1000);
      }))
      return this
    }

    // 先等待具体时间在执行
    function waitFirst(dur){
      tasks.unshift(() => new Promise(resolve => {
          setTimeout(resolve, dur*1000);
      }))
      return this
    }
    return {
      execute,
      do:doSomething,
      wait,
      waitFirst
    }
  }
复制代码

 

posted @   10后程序员劝退师  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2019-03-27 小程序如何避免setData的列表数据过大
点击右上角即可分享
微信分享提示