如果与同步函数一起使用,会延迟阻止UI吗?

时间:2015-02-13 16:11:08

标签: javascript jquery jquery-deferred

我只是发现了JQuery延迟对象,这些对于链接异步调用非常方便。

知道sychronous calls也可以通过延迟处理,我想知道延迟的目的是在解决每个延迟之后将手还给UI还是仅限于将它们链接在一起? / p>

显然,这个问题与异步调用无关。我真正想要了解的是延迟对象在处理同步调用时对UI的行为。

3 个答案:

答案 0 :(得分:2)

没有承诺可以更改同步调用所花费的时间或使其同步调用不会阻止浏览器UI。因此,如果同步函数调用需要15秒才能完成,那么无论是否使用promises,浏览器UI都将被阻止15秒。

当使用非jQuery,符合标准的Promises库(如Bluebird)时,即使同步解析了promise,也始终异步调用.then()个处理程序。这为您提供了调用.then()处理程序的时间的一致性,无论是同步解析还是异步解析。 jQuery并不总是以这种方式符合标准(虽然它显然正在努力解决这个问题)。虽然这并没有改变15秒同步函数仍会阻止UI 15秒,但使用同步操作的承诺有时可以改变代码执行的顺序而不是使用promises(因为它是's' s一个异步模型,即使某些代码是同步的。)

答案 1 :(得分:0)

是。同步调用将阻止UI线程。

答案 2 :(得分:0)

Javascript在UI线程上运行,因此同步函数将占用该资源。如果你想尝试一些解决这个问题的方法,你可以看一下site提供的内容。您可以使用Google访问许多其他资源。