IE可以同时执行两个JavaScript函数吗?
Can IE execute two JavaScript functions concurrently
我们使用C#的WatiN与浏览器(目前只有IE)进行交互。
WatiN 的一些方法是一个简单的包装器,它向某些 Web 元素发送onchanged()
和onclick()
。
WatiN 还为此提供了一个即发即弃版本,它基本上提供了一个非阻塞版本。
我的问题是,浏览器是否还要同时执行两个JS函数?
例如,假设以下代码:
// Uses FireEventAsync("onchanged")
SelectList.SelectNoWait()
SelectList.FireEventAsync("onclick")
JS函数可以同时执行吗?
我相信我们遇到了类似的问题,当我们触发另一个事件时,onchanged()
函数仍在执行,我想知道这在技术上是否可行。
不,只要您不专门使用 Web Workers,就不能同时执行多个操作。浏览器上下文中只能有一个用户线程处于活动状态。
通常,您只执行在事件上调用的小函数,大多数长任务与资源和异步相关。
当您认为"基于事件"并且(最重要的是)不要尝试从自然异步的内容进行同步调用时(我想到了 AJAX),您没有问题。
简而言之:不。JavaScript 执行是单线程的。
但是,对于异步操作(ajax、计时器、工作线程等),可以将函数的某些部分设置为稍后在线程空闲时执行。
一个人为的例子是:
function foo() {
setTimeout(function () {
console.log('three');
}, 10);
console.log('one');
}
function bar() {
console.log('two');
}
foo();
bar();
虽然 foo
和 bar
是同步调用的,并且日志是按three, one, two
顺序写入的,但它们将按one, two, three
的顺序执行,因为计时器会将 ' three'
的日志延迟到以后。
而且,即使您的处理程序不使用任何异步内容,SelectNoWait
和FireEventAsync
也可能使用。
相关文章:
- 组合两个javascript函数
- 比较包含多个值对的两个JavaScript数组
- 为什么这两个JavaScript函数调用具有相同的“;这个“;价值
- 无法延迟iPhone/iPad上的两个JavaScript操作
- 比较IF条件下的两个javascript数值
- 我可以在两个javascript文件之间传递一个字符串吗?
- 为标记调用href中的两个javascript函数
- 如何执行两个javascript函数
- 两个javascript网络工作者连续打印输出-为什么不同时打印呢
- 如何手动绑定两个javascript文件
- 两个javascript脚本的非独立性
- 合并两个Javascript数组,一次合并三个元素
- 为同一标记中的两个不同事件调用两个javascript方法
- 将两个Javascript函数组合到一个窗口中.nload不起作用
- 结合两个JavaScript函数
- IE可以同时执行两个JavaScript函数吗?
- 两个 JavaScript 文件,哪个方法首先调用
- 在 html 中的两个 JavaScript 之间传递值
- 两个 JavaScript 对象具有相同的属性实现方式,但原型不同
- 如何将两个Javascript函数合二为一