我有一个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()
的呼唤