如何在 Lodash 中延迟打印内容
How to print something in delay in Lodash
我在 JS/Lodash 中有一个练习,打印十首歌曲,每首歌曲延迟 5 秒。问题是,我得到了这首歌的 10 倍,那个索引是第 14 位。
我不知道我在哪里犯了错误,将不胜感激。
const utwory = [{
"author": "Queen",
"song": "Bohemian Rhapsody",
"place": 1,
"change": 0
},
{
"author": "Deep Purple",
"song": "Child in time",
"place": 2,
"change": 2
}
]
function ex7() {
let i = 0;
while (i < 10) {
_.delay(function(arr) {
console.log(arr[i].author + " " + arr[i].song)
}, 10000, utwory)
i += 1
}
}
ex7()
调用_.delay()
里面的函数时,使用的是i
的当前值,也就是10。可以把循环改成for循环来解决,用let i
,所以 i
它的值在闭包中。
此外,您可以通过将当前项目 utwory[i]
传递给延迟来避免此问题,并且仅 console.log()
回调中的项目。
我在这里使用了两种方法:
const utwory = [{"author":"Queen","song":"Bohemian Rhapsody","place":1,"change":0},{"author":"Deep Purple","song":"Child in time","place":2,"change":2}]
function ex7() {
for(let i = 0; i < utwory.length; i++) {
_.delay(function({ author, song }) {
console.log(`${author} ${song}`)
}, 1000 * (i + 1), utwory[i]) // set the item to print here
}
}
ex7()
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous"></script>
我在 JS/Lodash 中有一个练习,打印十首歌曲,每首歌曲延迟 5 秒。问题是,我得到了这首歌的 10 倍,那个索引是第 14 位。 我不知道我在哪里犯了错误,将不胜感激。
const utwory = [{
"author": "Queen",
"song": "Bohemian Rhapsody",
"place": 1,
"change": 0
},
{
"author": "Deep Purple",
"song": "Child in time",
"place": 2,
"change": 2
}
]
function ex7() {
let i = 0;
while (i < 10) {
_.delay(function(arr) {
console.log(arr[i].author + " " + arr[i].song)
}, 10000, utwory)
i += 1
}
}
ex7()
调用_.delay()
里面的函数时,使用的是i
的当前值,也就是10。可以把循环改成for循环来解决,用let i
,所以 i
它的值在闭包中。
此外,您可以通过将当前项目 utwory[i]
传递给延迟来避免此问题,并且仅 console.log()
回调中的项目。
我在这里使用了两种方法:
const utwory = [{"author":"Queen","song":"Bohemian Rhapsody","place":1,"change":0},{"author":"Deep Purple","song":"Child in time","place":2,"change":2}]
function ex7() {
for(let i = 0; i < utwory.length; i++) {
_.delay(function({ author, song }) {
console.log(`${author} ${song}`)
}, 1000 * (i + 1), utwory[i]) // set the item to print here
}
}
ex7()
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous"></script>