这个与javascript调用的超时相关功能是什么?

时间:2013-11-07 22:05:49

标签: javascript timeout settimeout

我对这种行为很熟悉,但没有词汇来描述(以及谷歌)。

setTimeout(function () { alert("timeout!"); }, 1000);
veryLongProcess();  // lasts longer than 1000 milliseconds

我相信这样做的结果是,在漫长的过程结束后,即在执行代码后超过1秒,您会收到警报。我想这是因为超时将函数发送到某个单独的“线程”或“堆栈”或“循环”,只能在当前的完成之后启动,即使当前的一个需要比超时更长的时间最初为。

指定

这有名字吗?我怎样才能更多地了解它的工作原理?

2 个答案:

答案 0 :(得分:2)

我相信你可能正在寻找“同步”这个术语。节目。

由于JavaScript是单线程的,因此veryLongProcess()会导致警报在1000毫秒后触发,原因是阻塞

请注意,阻止JavaScript会严重降低用户体验,例如锁定浏览器或导致其显示“杀死脚本”。对话框,打破了流程的功能。

答案 1 :(得分:0)

您正在寻找的是“回调函数”。您可以将函数作为变量传递给其他函数,然后随时执行它们。我写了一个关于它如何工作的快速样本(未经测试)。

function longProcess(callback){
    //a bunch of code execution goes here
    var testNumber = 5;

    //This portion of code happens after all desired code is run
    if (callback != undefined){  //Check to see if a variable 'callback' was passed... we're assuming it's a function
        callback(testNumber);    //Execute the callback, passing it a value
    }
}

function testCallback(number){
    alert("Number: " + number);  //Alert box will popup with "Number: 5"
}

longProcess(testCallback);       //Call your long process, passing another function as a variable
相关问题