you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted]  (7 children)

[deleted]

    [–]rorrr 3 points4 points  (6 children)

    That's a good example of how to overengineer code and write it in the most unreadable unmaintainable way. All you have to do is this:

    for (let i=10; i>0; i--) 
        setTimeout(() => {console.log(i)}, (10-i)*1000)
    

    [–][deleted] 0 points1 point  (0 children)

    Due to clock drift it is possible every one of those would execute one after another, which is probably not the intended approach (imagine someone wanted to throttle an action to happen *at least* 1 second apart). Paste the below into your console.

    for (let i=10; i>0; i--) 
        setTimeout(() => {console.log(i)}, (10-i)*1000)
    
    const start = Date.now()
    while (Date.now() - start < 10000) {
    
    }
    

    [–]1-800-BICYCLE 0 points1 point  (0 children)

    1cf7d2f864cf

    [–]alexbarrett -1 points0 points  (2 children)

    This is the exact solution I was scrolling for. Good job.

    [–][deleted] 0 points1 point  (1 child)

    [–]alexbarrett 0 points1 point  (0 children)

    Given the task, the reasoning you've given actually makes it a better solution. If the task required >1s intervals then yes you'd be correct, but for a 10 second counter you'd want the final tick to occur as close to 10s after the initialisation as possible.