TAT.finlay 编程小技巧分享 (队列回调)
In 未分类 on 2015年07月25日 by view: 4,117
7

 

场景描述

有时候我们会碰到这样的任务场景,需要在一个界面上展示,许多图表内容,而获取图表数据的 CGI 做得非常原子化,也不方便更改,那么只能发很多个请求来拉取数据,展示图表,大致像下面的界面。
liushui
或者有时候,希望一系列函数按照一定顺序自动执行,但里面内嵌各种回调,完全不知道函数何时执行。可能不得不使用标志位来记录执行阶段。(当然可以使用 promise, 这里是尝试给出另外一种解决方案和思路), 这样代码看来一团糟,作为有处女座潜质的程序员多少有些纠结。

背景交代完毕,现在是正题,小技巧分享。
其实呢,我们需要的只是一个有加载顺序的队列来完成任务。
但是这里有个思维难点是程序执行流程并非线性推进,而是通过事件推进,不符合常规的线性思维方式。

我就想了一种可以让代码看起来更线性的一种方案.

代码如下:

这里我做的事情就是将队列函数,交给调用方自己来决定,何时执行。
同时 run 是个幂等函数,方便随时调用,还可以保证只有一个队列在执行,且不被多次调用。
这样就满足了开场需求,在 ajax 中顺序回调:)

 

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2015/07/bian-cheng-xiao-ji-qiao-fen-xiang-dui-lie-hui-diao/

  1. 在路上前行torres 2016 年 1 月 13 日

    这里 walk()函数 isRunning = false ; 有用吗?

  2. 爱奇趣分享网 2015 年 9 月 4 日

    很久没有过来了,今天过来看一看!

  3. 小A 2015 年 8 月 20 日

    个人认为,把 callback 参数名称换成 next 更易理解。

  4. steelli 2015 年 8 月 5 日

    还是一个队列,一个一个的执行?阻塞?

  5. ◕‿◕ME 2015 年 8 月 4 日

    promise.then.then.then

  6. Cecilia0815 2015 年 7 月 30 日

    还是各种 callback 方法啊

发表评论