JavaScript中的callback混乱,Node.js
statusDefault = status.textContent, setStatus = function(s){ status.textContent = s;//to set any status if(s != statusDefault){ var delay = setTimeout(function(){ setStatus(statusDefault); clearInterval(delay); },3000); } }; setStatus('Testing..');
在上面的代码中,我没有得到它的工作原理。 默认状态变为“testing..”,3秒后再次显示默认状态。 我很困惑。
它是如何工作的?
statusDefault = status.textContent,
在内容更改之前复制内容,并将其caching到JavaScript中。 这是默认的内容。
setStatus = function(s){ status.textContent = s;
当函数运行时,将第一个参数设置为status
的textContent
。 简而言之,它只是改变了函数运行时元素的内容。
if(s != statusDefault){
检查默认值没有先input。
var delay = setTimeout(function(){ setStatus(statusDefault); clearInterval(delay); }, 3000);
创build一个持续3000毫秒(3秒)的超时,3秒后再次用setStatus(statusDefault)
自己调用它自己,这将重置内容到最初的状态(因为statusDefault
),它也会呈现前一个if语句为false,所以它不会创build另一个超时。
这里是一个更简短的(也许更容易理解)列表:
- 原始内容被复制到
statusDefault
。 - 内容设置为
'Testing..'
。 -
'Testing..'
不等于原始内容。 - 创build持续3秒的超时(创build3秒延迟)。
- 函数再次在内部调用,传入
statusDefault
。 - 内容设置为
statusDefault
。 - 如果陈述是错误的。 没有更多的任务,JavaScript完成。