现在,我的移动web应用程序在启动时会在午餐时与一些apis进行对话。它们与呈现页面的javascript交织在一起。
当它们同时启动时,页面渲染会变得不稳定,可能是因为渲染使用了硬件加速,也可能是因为在移动设备(iphone)上同时运行太多JS是正常的。
我想以这样一种方式构建应用程序:如果用户采取操作来更改页面的呈现,或者任何与UI相关的事情被触发,它将优先于任何其他JS。
我想要的体验是快速和快速的,即使它使一些行动(与apis交谈)花费的时间比它应该花的时间更长。
你知道如何实现这样的事情吗?
谢谢!
发布于 2011-12-08 12:17:03
给定的javascript线程运行到完成时不会中断,因为Javascript是单线程的(除了Web Workers,但我不认为这就是我们在这里谈论的)。
因此,确定工作优先级的唯一方法是创建要完成的工作队列。执行队列中的一个工作单元,然后决定下一步执行队列中的哪个工作单元。如果您要完成的所有工作都在队列中,那么您可以决定在从队列中获取下一个工作单元时应该首先完成哪些项目。
工作单元越小/越短,您在任务之间的切换就越细粒度。如果您使用setTimeout(),但队列中的每个项之间的时间非常短,则会有机会运行任何UI事件(如单击或其他计时器)。
您甚至可以发出一组ajax请求,当响应到达时,您可以将响应放入队列中,以便在有时间时进行解析/处理。
发布于 2011-12-08 11:39:48
出现这种不稳定行为的原因是您有一个未完成的Ajax请求数量的限制。
您可以编写一个javascript函数/对象来管理Ajax请求的优先级队列以及每个请求的回调。请求是按优先级/队列中的位置顺序发出的。具有高优先级的新请求在不太重要的请求之前执行,即使它们可能是稍后请求的,类似于添加了jquery Ajax Manager plugin +优先级。
https://stackoverflow.com/questions/8425821
复制相似问题