如何解决如何在 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循环来解决,用{{1 }},所以 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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。