2013-05-17 47 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(...) 
        } 
    } 
    
  • 相關問題