所以我想在瀏覽器中加載這些連續的異步數據。我喜歡Promises,他們很好,不是嗎?編程樂趣,易於閱讀。連續承諾/ A + loading
在我的問題中,我不會不斷更新瀏覽器中的某些資源,例如圖像。那時有兩部分:生產者和消費者。在同步代碼中,它可能看起來像這樣:
var p = producer(),
data = null;
while (data = p.next()) {
consumer.update(data)
}
這將如何轉換爲異步,啓用Promise/A +的代碼?
UPDATE
我結束了使用下列基本類:
class Stream
input : null
output : null
# @param {function} callback
end : (callback) -> @end_callback = callback
# @param {Stream} writable
# @return {Stream}
pipe : (writable) -> writable.input = @ ; @output = writable
# @param {function} callback
# @return {Stream}
data : (callback) ->
setTimeout =>
last = @
chain = [@]
while last.input != null
last = last.input
chain.push(last)
last = chain.pop()
next = =>
thenable = last.read()
if thenable is null and @end_callback
return @end_callback()
thenable.then (value) =>
if not chain.length
callback(value)
@data(callback)
else
last = chain.pop()
last.write(value)
next()
next()
, 0
@
只實現read
方法,返回一個Promise
或空,或兩者read
和write
創造轉變流。
不錯,這是我想出了太多,我只是想知道是那裏什麼。事實上,我的情況是流。 Thx爲鏈接。 – skrat