私のアプリは何をしますか:
- 情報を非同期的にストリーミングします (これはコメット スタイルのアプリで、Faye を使用しています)。
- カルーセルへの追加。
- 7秒間表示します。
- 手順 (2) を繰り返します。
私の問題は何ですか: 到着した瞬間にデータをカルーセルに追加すると、現在の表示が上書きされます(7秒を無視します)。
私がやっていること: 新しいデータが到着したときに行を取得し、7 秒後に行の最初の要素がそれをポップして追加するように、coffeescript で「待機行」を作成しようとしています。setTimeout を使用しようとしましたが、非同期であるため機能しませんでした。
例:
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)
それが最善のアプローチであるかどうかはわかりません。ライブデータをストリーミングするのはこれが初めてのアプリです。