使用JavaScript中的for循环进行基于条件的迭代

时间:2018-07-05 10:25:44

标签: javascript for-loop vuejs2 iteration

我正在尝试使用vue.js中的for循环播放音频文件。我的代码如下所示

for(var i = this.start; i < this.end; i++) {
    var audio = new Audio('some value');
    audio.play();
    if(audio.ended == true) {
        //go for another iteration
    }
}

条件为真后,我想再进行一次迭代。其实我想一个接一个地播放音频文件。我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可能正在尝试执行以下操作:

function audioPlayer(iteration = this.start) {  // iteration variable with default parameter
  if (iteration < this.end) {
    let audio = new Audio('some value');
    audio.play();
    if(audio.ended == true) {
        //go for another iteration
        this.audioPlayer(iteration + 1);
    }
  } else {
    return "end is reached";
  }
}  

在这种情况下,您可以使用ES6的default parameters,如果您使用default parameters,则不必更改任何现有代码(由于函数签名未更改,因此从该位置调用了此函数)。由于我不知道您的确切代码逻辑,因此我无法为您提供代码帮助。但是,我希望这会为您指明正确的方向。如果您仍然遇到任何问题,请告诉我:)

答案 1 :(得分:0)

您是否尝试过重新分配我?

audio.currentTime = 0 


var audio = null;
var replayed = false;
for(var i = this.start; i < this.end; i++) {
    if( "undefined" == typeof audio.ended || replayed )
        audio = new Audio('some value');
        replayed = false;
    }
    audio.play();
    if(audio.ended == true) {
        audio.currentTime = 0;
        audio.play();
        replayed = true;
    } else {
        --i;
    }
}

或者您可以将currentTime重新分配为0。

<view-router update-document-title testing>
        <ehr-welcome-page-view pattern="/"></ehr-welcome-page-view>
        <ehr-router-otherpattern="/other/*"></ehr-router-emis>
</view-router> 

<footer>
   <div class="footer-content-wrapper center-content border-right">
          <a href="http://www.mypage.co.uk/" target="_blank">
            <img src="./images/my-logotype.png" alt="MyLogotype">
          </a>
        </div>
        <p>Some text</p>
        </div>
</footer>