为了账号安全,请及时绑定邮箱和手机立即绑定

for循环中不修改timeout值, 每隔1秒输出

for循环中不修改timeout值, 每隔1秒输出

繁花不似锦 2018-11-08 14:15:11
很简单的一个需求, 循环10次, 每隔1秒输出i的值, 伪代码如下for(let i=0; i<10; i++) {    setTimeout(function(){        console.log(i)    }, 1000)}地球人都知道这样会都输出一个值用闭包可以实现1秒后输出所有值, 但是我想要的是每隔1秒输出一个值(不用改变timeout的时间, 比如:(i+1)*1000, 这种方式)请问:这个如何实现?补充一个@李引证的答案, 估计好多同学看的不太懂这段代码在node里面是运行不通的, 因为需要es7, 可以在浏览器里面运行const sleep = time=>new Promise(resolve=>setTimeout(resolve,time));这段代码简写的很严重, 我改成详版const sleep = (time) => {    return new Promise((resolve) => {        setTimeout(() => {            resolve()        }, time)    })}这样看的能清楚些其实这些sleep函数真的没干么事, 方法如其名, 只是sleep了一段时间其实await是有返回值的, 返回的是resolve的参数, 不信你试试这段代码async function test() {    for (let i = 0; i < 10; i++) {        let t = await sleep(1000)        console.log(t, i)    }}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 853 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信