2016-06-11 92 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

我已经发布完整的代码。该代码用于在问答游戏中抓取当前问题的问题文本。 –