2016-04-23 104 views
0

下面是我的代碼鏈接。請多次點擊該按鈕以查看我的意思。我試圖通過函數調用之間的間隔多次調用相同的函數。請幫幫我。 http://codepen.io/arminemash/pen/KzBBjN如何在JS中調用2次或更多次時延遲函數執行?

HTML

<div id='generalwrapper'> 
    <div id='general'>     
     <div id='1' class='cell' onclick='simon(this.id)'></div> 
     <div id='2' class='cell' onclick='simon(this.id)'></div>   
     <div id='3' class='cell' onclick='simon(this.id)'></div> 
     <div id='4' class='cell' onclick='simon(this.id)'></div> 
    </div> 
    <div id='buttondiv'> 
     <button onclick='startGame()'>On</button> 
    </div> 
</div> 

的JavaScript

var browser=[]; 
var count = 1; 

function startGame(){ 
    for(var i=0;i<count;i++){  
     browserturn(); 
    } 
    count++; 
} 

function browserturn(){ 
    var x=getNumber(); 
    var element=x.toString(); 
    browser.push(element); 
    var y=document.getElementById(element); 
    y.click(); 
    $(y).delay(100).fadeOut().fadeIn('slow'); 
} 

function getNumber(){ 
    var randomNumber=Math.floor((Math.random() * 4)+1); 
    return randomNumber; 
} 
+0

'simon()'是什麼? – GeckoTang

+0

不要關注那個,這是我的代碼的第二部分。 – Armine

+0

達到什麼效果?請閱讀[問] – charlietfl

回答

0

這將保證所有的遊戲之間100ms的差距

var tasks = [] 
var createTask = function(task) { 
    tasks.push(function() { 
     task(function() { 
     tasks.shift() 
     var next = tasks[0] 
     next() 

    }) 
    }) 
    if (tasks.length === 1) { 
    tasks[0]() 
    } 
} 

var startGame = function() { 
    createTask(function(next) { 
    ... // whatever happens 
    // if ready call next 
    setTimeout(next, 1000) 
    }) 
} 

http://codepen.io/lipp/pen/eZjopG

+0

非常感謝您的幫助:) – Armine

+0

歡迎您!代碼對你有意義嗎?它解決了你的問題嗎? – lipp

+0

非常可惜,但不是,呼叫之間仍然沒有差距。我認爲我應該改變呼叫方式。 – Armine

相關問題