【发布时间】:2014-02-23 22:36:06
【问题描述】:
下面的代码可以运行,但我对方法的责任不太满意。我试图保持这些方法肤浅和“单一责任”,但他们仍然做了太多不同的事情 IMO。
在同步世界中,我将有三种方法:
- 返回响应的doajax(url)
- parse(response) 返回数据数组
- 用数组创建图形的draw(data)
但我不知道如何在这种异步情况下执行此操作。任何线索如何重组?会有几个图表,我希望能够用新数据更新给定图表而不创建新数据,所以会有一个类似 updateGraph(graphId, newData) 的方法
doajax = (url) ->
$.ajax
url: url
dataType: 'html'
success: (response) ->
parse response
parse = (response) ->
xmlDoc = $.parseXML(response)
xml = $(xmlDoc)
arr = []
xml.find('S').each ->
timestamp = new Date($(this).attr('T'))
value = parseFloat($(this).attr('AI1'))
arr.push [timestamp, value]
draw arr
draw = (data) ->
new Dygraph($('#graph1')[0], data,
// options..
)
doajax 'http://api.example.com/stats.xml'
【问题讨论】:
标签: javascript asynchronous methods coffeescript refactoring