Settimeout UI刷新和重循环策略

时间:2013-07-20 17:54:41

标签: javascript html

我在3个表(DB)上有一个2000次读操作循环。每个人都需要0.5秒才能完成(或更少) 我要显示文字“Pass 1,Pass 2,Pass 3” 所以我试图使用settimeout让导航器刷新信息。

我有:(pesudocode)

main() 
{ load_data();
  analize_data();
}

load_data () {
settimeout(read1 , 300);
settimeout(read2 , 300);
settimeout(read3 , 300);
}

我的问题和无知: - 每个setttimeoput都等到上一个代码“timed”结束了吗?我能相信我会在settimeouts之间有一个开端流量控制吗? (或不 ?) - 我是否要为'analize_data'定义一个settimeout。如果不是我进入该功能,我有一个错误,因为我没有数据读取...我有未定义数据的错误。 - 我是否要为settimeout流程定义全局策略? (也就是说,settimetouts对我的流程至关重要吗?)如果我有10个函数调用,我是否要定义10个settimeouts?

我很乐意找到与“do_pending_events”,“dojavascript_events”或“do_DOM_events”非常相似的内容。

我知道这是一个非常明显的问题,但我仍然没有任何明确和简单的解决方案, 我的数据库访问模式是本地的(所以我不需要任何类似的AJAX)

任何帮助或链接都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你的超时几乎会在同一时间点燃 - 即。第二个不会等到第一个完成。 你用load_data()函数做的是你设置三个超时,所有三个超时计划在300毫秒,然后返回。 然后在大约300ms内,将调用read1,read2和read3--每个都有自己的范围。

您可以使用flow.js(https://github.com/willconant/flow-js

来完成此操作

或者你自己。

  • 调用read1,将范围设置为load_data()
  • 的“this”
  • read1在其末尾发出“done1”
  • 让load_data()收听'done1'并在捕获事件时触发read2。

您可以修改此逻辑以包含任意数量的步骤。