在JavaScript中,如何在for循环中仅运行ONCE函数?

时间:2018-05-16 12:50:51

标签: javascript function for-loop

我已阅读了很多人的类似问题,但没有找到答案。所以我问自己的问题。

我一直在构建一项功能,允许我的用户在他们正在查看的页面上播放所有音轨。但是,要使我的音频播放器最初显示在页面上,当用户点击“全部播放”按钮时,我必须至少<div id="code"> <div> J'aime les croissants </div> <div> Moi j'aime les endives </div> </div>一次。

问题是,我正在使用for循环迭代数组中的所有歌曲ID以用歌曲填充播放列表。

initPlayer()

var theids = ids.split(","); for (var i = 0; i < theids.length; i++) { getItem(theids[i], type).done(function(obj) { if (obj.status == 'success') { mep.mepPlaylistTracks = obj.tracks; initPlayer(); addToPlay(obj.tracks, play); } }); } 依赖于initPlayer()函数中的信息,以便第一次正确启动。所以它必须按此顺序排列。

我可以在getItem()循环中只触发一次initPlayer()函数吗?每次将歌曲添加到播放列表时,都会导致我的播放器重新启动,这会导致性能和视觉问题。

这种事情在Javascript中是否可行?

修改以添加forinitPlayer()个功能。我是getItem()的新手,感谢任何帮助。

Javascript

1 个答案:

答案 0 :(得分:0)

您可以在for循环之外定义一个布尔值,如下所示:

var theids = ids.split(",");
var once = false;

for (var i = 0; i < theids.length; i++) {
  getItem(theids[i], type).done(function(obj) {
    if (obj.status == 'success') {
      mep.mepPlaylistTracks = obj.tracks;

      if(!once) {
          initPlayer();
          once = true;
      }

      addToPlay(obj.tracks, play);
    }
  });
}