0

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

我有:(伪代码)

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

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

我的问题和无知:-是否每个 setttimeoput 都等到以前的代码“定时”完成?我可以相信在 settimeouts 之间我会有一个开始结束的流量控制吗?(或不是?) - 我是否需要为“analize_data”定义一个 settimeout。如果不是,我输入函数并且我有一个错误,因为我没有读取数据......并且我有未定义数据的错误。- 我是否需要为 settimeout 流程定义全局策略?(也就是说,settimetouts 对我的流程很重要吗?)如果我有 10 个函数调用,我必须定义 10 个 settimeouts 吗?

我会很高兴找到真正类似于“do_pending_events”、“dojavascript_events”或“do_DOM_events”的东西。

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

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

4

1 回答 1

0

您的超时将几乎同时触发 - 即。第二个不会等待第一个完成。您使用 load_data() 函数所做的是设置三个超时,所有三个都安排在 300 毫秒内,然后返回。然后在大约 300 毫秒内,将调用 read1、read2 和 read3 - 每个都有自己的范围。

您可以使用 flow.js ( https://github.com/willconant/flow-js )来做到这一点

或者你自己。

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

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

于 2013-07-20T19:41:27.523 回答