我有一个按钮可以进行一些繁重的计算,并且在我想刷新页面的计算步骤之间。
JavaScript:
.on('click', function() {
// compute something
jQuery('#page')
.trigger('pageshow')
;
// compute something
jQuery('#page')
.trigger('pageshow')
;
// compute something
}
遗憾的是,这不起作用,因为- 事件在完成pageshow
后被触发.on(click)
。
有没有办法强制.trigger(...)
立即执行?
JavaScript - 丑陋的解决方案:
.on('click', function() {
// compute something
window.setTimeout(function() {
// compute something
jQuery('#page')
.trigger('pageshow')
;
window.setTimeout(function() {
// compute something
jQuery('#page')
.trigger('pageshow')
;
}, 1);
}, 1);
}
丑陋的解决方案会起作用,但真的很丑陋。还必须实施检查.on('click', ...)
- 事件在被触发时是否被完全计算。
JavaScript - 更漂亮但仍然丑陋的解决方案:
var functionFirst = function() {
// compute something
jQuery('#page')
.trigger('pageshow')
;
window.setTimeout(functionSecond, 1);
};
var functionSecond = function() {
// compute something
jQuery('#page')
.trigger('pageshow')
;
window.setTimeout(functionThird, 1);
};
var functionThird = function() {
// compute something
jQuery('#idJqGame')
.trigger('pageshow')
;
};
window.setTimeout(functionFirst, 1);
更漂亮但仍然丑陋的解决方案基本上与丑陋的解决方案做同样的事情 - 它更容易阅读,因此到目前为止我一直在使用这个。