2016-06-11 74 views
-2

我添加了setTimeout但它不起作用。我想在聲音結束5秒後顯示問題。setTimeout()不能用於返回值

self.getQuestionText = function() { 

    startSound('levelq', false); 
    setTimeout(function() { 
    return self.questions[self.level() - 1].question;}, 5000); 

} 
+3

的可能的複製[如何在JavaScript中的setTimeout在函數返回值(http://stackoverflow.com/questions/ 25129057/how-to-make-javascript-settimeout-returns-in-a-function) –

+0

不要毫無意義地** **在美國**。只需清楚地提供您的問題,並提供完整的信息。 –

+0

我做錯了什麼?我回答說,分號後,它仍然無法正常工作... –

回答

0

setTimeout() in asynchronous並返回回調函數中的值。改變你的js的結構。

相反的:

self.getQuestionText = function() { 

    startSound('levelq', false); 
    setTimeout(function() { 
     return self.questions[self.level() - 1].question; 
    }, 5000); 

    } 

// The rest of the code 

使用回調結構:

self.getQuestionText = function() { 

    startSound('levelq', false); 
    setTimeout(function() { 
     self.getQuestionText = self.questions[self.level() - 1].question; 

     // The rest of the code 
    }, 5000); 

} 
+0

問題仍然沒有顯示....和聲音工作正常.. –

+0

@MuhammadDanish由於這個答案是爲什麼這段代碼無法工作的一般原因,我將留在這裏爲其他人在未來。同時,請編輯您的問題並添加更多代碼。在試圖展示問題的位置添加代碼('self.getQuestionText = ...'行後的內容以及您想要對變量進行的操作)。也添加相關的html。你可能有更多的錯誤。 –

+0

我已經發布完整的代碼。該代碼用於在問答遊戲中抓取當前問題的問題文本。 –