javascript执行流

时间:2017-08-02 13:53:48

标签: javascript dom-events

我的假设是对的吗?

给出以下代码:

function test() {
    for(let i=0 ; i < 100000; i++) {
      // Do a set of costly operations that are NOT ASYNCHRONOUS
    }
}

test();

myScriptElement.onload = test;

我的假设是“不”,在第一次测试之前, myscriptElement.onload 没有机会被执行( test 函数)通话终止了 ...由于Javascript有一个“线程”,它继续执行指令,直到它到达某些异步代码,保存当前的callstack / context / etc,将它放入类似区域的作业队列,然后执行该队列中的下一个符合条件的项目或等待一个进来。

是吗?

或者,我应该确保第一个 test 函数调用已经返回,就像在布尔标志的帮助下一样:

let terminated = false;
myscriptElement.onload = function specificHandler(e) {
    if (terminated) {
        test();
        return;
    }
    setTimeout(specificHandler.bind(null, e), 1000);
};

谢谢。

0 个答案:

没有答案