微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Lodash 中延迟打印某些内容

如何解决如何在 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 举报,一经查实,本站将立刻删除。