很簡(jiǎn)單的一個(gè)需求, 循環(huán)10次, 每隔1秒輸出i的值, 偽代碼如下for(let i=0; i<10; i++) { setTimeout(function(){ console.log(i) }, 1000)}地球人都知道這樣會(huì)都輸出一個(gè)值用閉包可以實(shí)現(xiàn)1秒后輸出所有值, 但是我想要的是每隔1秒輸出一個(gè)值(不用改變timeout的時(shí)間, 比如:(i+1)*1000, 這種方式)請(qǐng)問:這個(gè)如何實(shí)現(xiàn)?補(bǔ)充一個(gè)@李引證的答案, 估計(jì)好多同學(xué)看的不太懂這段代碼在node里面是運(yùn)行不通的, 因?yàn)樾枰猠s7, 可以在瀏覽器里面運(yùn)行const sleep = time=>new Promise(resolve=>setTimeout(resolve,time));這段代碼簡(jiǎn)寫的很嚴(yán)重, 我改成詳版const sleep = (time) => { return new Promise((resolve) => { setTimeout(() => { resolve() }, time) })}這樣看的能清楚些其實(shí)這些sleep函數(shù)真的沒干么事, 方法如其名, 只是sleep了一段時(shí)間其實(shí)await是有返回值的, 返回的是resolve的參數(shù), 不信你試試這段代碼async function test() { for (let i = 0; i < 10; i++) { let t = await sleep(1000) console.log(t, i) }}
for循環(huán)中不修改timeout值, 每隔1秒輸出
繁花不似錦
2018-11-08 14:15:11