JavaScript,Node.js中回调的混乱

时间:2016-01-03 16:11:31

标签: javascript node.js sockets

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..');

在上面的代码中,我没有得到它的工作原理。默认状态更改为"测试..",3秒后,它再次显示默认状态。我很困惑。

它是如何运作的?

1 个答案:

答案 0 :(得分:1)

statusDefault = status.textContent,

在更改内容之前复制内容,将其缓存在JavaScript中。这是默认内容。

setStatus = function(s){
    status.textContent = s;

运行该函数时,将第一个参数设置为status' s textContent。更简单地说,它只是改变函数运行时元素的内容。

if(s != statusDefault){

检查默认值是否先输入。

var delay = setTimeout(function(){
  setStatus(statusDefault);
  clearInterval(delay);
}, 3000);

创建一个持续3000毫秒(3秒)的超时,3秒后再次使用setStatus(statusDefault)在内部调用自身,这会将内容重置为原来的内容(因为statusDefault),并且它还会将前一个if语句呈现为false,因此它不会创建另一个超时。

这是一个更简短(也可能更容易理解)的列表:

  1. 原始内容将复制到statusDefault
  2. 内容设置为'Testing..'
  3. 'Testing..'不等于原始内容。
  4. 创建一个持续3秒的超时(创建3秒延迟)。
  5. 函数再次在内部调用,传入statusDefault
  6. 内容设置为statusDefault
  7. 如果声明是假的。没有更多的任务,JavaScript已经完成。