在IE和Chrome中以不同顺序运行的功能

时间:2015-06-24 16:39:58

标签: javascript google-chrome internet-explorer underscore.js promise

我有一个Backbone应用程序,我在代码的不同部分调用两个函数。

其中一个函数在下划线 _.defer(function(){})内调用,另一个函数在正常的javascript流程中运行(即使它在PDFJS承诺中)。

但是,在Chrome和IE11中运行我的应用程序时,会以不同的顺序调用它们,这会导致行为不一致。

在Chrome中,订单为:

PDFJS.getDocument(...)
.then(...)
.then(function A)
.then(...)
.then(function B)

函数A正在初始化Backbone视图并调用render方法,而Function B则触发将执行另一个函数的事件。

Backbone视图afterRender()方法调用_.defer()以延迟执行,因为我只想在执行函数B后运行代码。

在Chrome中,它按预期工作,执行Backbone视图render()方法,延迟afterRender()方法,调用函数B并且仅在此之后(在下一个执行循环中)是{ {1}}来电。

在IE中,在afterRender()方法的延迟部分执行后立即调用render()方法。只有这样才能执行functionB。

关于在IE中使用延迟是否有任何问题?有不同的行为是正常的吗?

它可以与IE相关(我在IE11中进行调试)JS引擎效率不高,当延迟指令添加到事件队列时,其余的指令都不是还有吗?从我所看到的下划线afterRender()基本上是对defer()的呼唤

0 个答案:

没有答案