我有一个有机会在之前操作我的页面的DOM 它的样式,呈现和显示给用户。 显然,我很乐意做这个窗口中所有动态的有趣东西,因为在渲染页面之后DOM操作非常昂贵。由于这主要针对移动设备,因此这种优化对我来说很有价值。通过回调强制同步函数执行
这里有一个基本概述/时间表:
function CalledBeforePageRendered(){
DoAsyncDataBaseWorkWithCallBack(AsyncDataBaseCallBack);
DoLocalizationsAndOtherSYNCRONOUSActions();
}
function AsyncDataBaseCallBack(results){
// code that processes the results element
// code that manipulates the DOM *before* it's styled.
}
的问题是,DoAsyncDataBaseWorkWithCallBack
和DoLocalizationsAndOtherSYNCRONOUSActions
迅速完成,然后CalledBeforePageRendered
收益和后续的造型被应用。
应用样式后,该页面会显示给用户...然后AsyncDataBaseCallBack
被称为 ,然后应用div标签和其他DOM修改。只有,我需要这些修改发生在程式化之前发生
有没有什么办法可以使'CalledBeforePageRendered
'等待'AsyncDataBaseCallBack
'在返回前完成?我知道闭包通常在这里工作,但我不知道如何使用在CalledBeforePageRendered
函数之外定义的回调来完成闭包工作。
你为什么要异步执行DataBaseWork?如果所有工作(Db和Dom)都必须在最后同步,为什么不直接发送数据和从服务器构建的html? – Jaime 2012-07-12 19:07:22
当你说'后来的造型应用',你的意思是更多的JS或只是页面的其余部分渲染的东西? – 2012-07-12 19:09:17