停止firefox退出延迟对象的执行
Stop firefox from exiting execution of deferred objects
我有一些异步代码,其中对于给定的延迟对象defObj
,我附加了几个想要执行的函数,比如:
$.when(defObj).done(function(){ console.log('callback 1'); });
$.when(defObj).done(function(){ console.log('callback 2'); });
$.when(defObj).done(function(){ console.log('callback 3'); });
(在实际的代码中,这些附加在一些不同的函数中,我正在调用这些函数来初始化页面。)
在其他一些异步代码完成后,我想解析延迟对象并触发所有回调。我手动解决回调:
defObj.resolve();
在铬合金中,这很好用。延迟对象解析,并且所有回调都启动。在firefox中,我在第二次回调中遇到了某种错误(或者至少,我认为我会这样做,因为它不会显示在控制台中。)这个错误阻止了其他延迟对象的解析,并停止了代码的执行。我尝试将代码放入try/catch块:
try{ defObj.resolve(); } catch(e){ console.error(e) };
但萤火虫没有进入捕捉区。
有没有办法在firefox完成所有延迟回调之前阻止它退出代码执行?
如果这看起来不清楚,请告诉我,我会尽力清理。
我尝试将代码封装在try{}catch(){}
块中,但没有成功。最终起作用的是,通过时间延迟为零的window.setTimeout
调用,将正在分解为异步代码块的代码移动,如下所示:
$.when(defObj).done(function(){ console.log('callback 1'); });
$.when(defObj).done(function(){
window.setTimeout(function(){console.log('callback 2'); }, 0);
});
$.when(defObj).done(function(){ console.log('callback 3'); });
这将导致问题的代码从页面其余部分的流中删除,从而阻止执行。我仍然不知道是什么导致firefox停止代码执行,但这是一个不错的方法
相关文章:
- 对具有ui typeahead的对象中的值执行orderBy
- Javascript:对回调创建的对象执行方法
- 执行过滤对象数组的方法
- 如何指定在执行控制台时要显示的属性.log对象
- 执行上下文和变量对象在 JavaScript 中实际上是一回事吗?
- 为什么用构造函数创建对象会执行对象's方法
- 在延迟对象解析后执行启用函数
- 在ko.applyBindings(..)中执行Knockout js订阅函数(用于可观察对象)
- 删除对象属性在执行删除操作之前生效
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- javascript中作为对象属性值的自执行函数
- 在执行脚本之前,请查看对象是否未定义
- 如何在运行时添加的对象上执行Jquery插件
- 有人能解释一下;r'的对象在下面的代码示例中执行
- 如何在不选择模式配置参数的情况下,使用mongoose在MongoDB模式实例化中的关联数组/对象中执行foreach
- "对象没有't支持这种性质或方法“;在IE 8中.在调试中执行精细
- 在JSON对象中执行函数
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- 在全局范围内执行文件,而不是返回导出的对象
- 在Javascript中对对象属性执行字符串方法