2013-05-17 77 views
1

我的应用程序做什么:如何在coffeescript或javascript中创建等待线?或者另一种方法

  1. 流信息异步(这是一个彗星风格的应用程序和使用王菲IM)。
  2. 附加到一个卡鲁塞尔。
  3. 显示7秒。
  4. 重复步骤(2)。

我的问题是什么: 如果我将数据追加到转盘就在到达它会覆盖当前显示(忽略7秒)的时刻。

我在做什么: 试图建立一个的CoffeeScript“在线等待”,所以当新的数据到达它得到线和7秒上线的第一个元素后弹出它和追加。我试图使用setTimeout,但它不工作,因为它是asych。

一个例子:

line = [] 
# the second parameter is the callback function when a new data arrives 
faye.subscribe 'my/channel/', (data) -> 
    appendEl = (el) -> 
    $('.my-container').append(el) 
    line.slice(0,1) 
    line.push(data) 
    # I think this could work if timeout could block, like sleep() 
    # So when new data arrives it will get in line 
    my_time = setTimeout(appendData(data), 7000) 
    if line.empty? 
    clearTimeout(my_time) 

我不知道这是否是最好的方法,这是流的实时数据我的第一个应用程序。

回答

0

有两件事你可以做多次间隔的事情。

  • 使用的setTimeout与功能,这将调用的setTimeout本身具有的功能

你只需要你的问题是什么增加一些变量的外部范围

  • 使用的setInterval并使用它,像

    var pipe = [] 
    
    faye.subscribe('my/channel', function(data) { 
        pipe.push(data) 
    }) 
    
    
    setTimeout(appendData, 7000) 
    
    function appendData() { 
        if (pipe.length) { 
         var item = pipe.shift() 
         $('.my-container').append(...) 
        } 
    } 
    
  • 相关问题