很简单的一个需求, 循环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) }}
添加回答
举报
0/150
提交
取消