自制定时器不能返回想要的object

如题,自己写了个类似于setInterval的定时器,想要它返回{continue: true}方便清除定时器,但是发现执行结果是false,百思不得其解。

测试环境:chromium62.0 v8

let interval = function(callback, timeout, ...args){
    let flag = { continue: true }
    function loop(){
        setTimeout((args) => {
            callback(...args)
            if(flag.continue) arguments.callee()
        }, timeout, args)
    }
    
    return !function(){
        loop()
        return flag
    }()
}

// Test
let test = interval(() => {
    console.log('test')
},1000)

// 这里test是false,不是想要的{continue: true}
阅读 1.6k
1 个回答

我傻了,写习惯'!'了…当我没提问

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题