循环结束后如何发送函数的结果? [英] How to send result of a function after the loop is finished?
问题描述
在CoffeeScript的Node / Express服务器中,我有以下函数:
In a Node/Express server in CoffeeScript, I have the following function :
@resolveServers = (url, servers, answer) ->
result = []
treatServer(url, server, (treatAnswer) ->
result.push(treatAnswer)
) for server in servers
answer(result)
treatServer方法需要一些时间,答案是在循环结束之前发送。如何在循环结束时发送结果?
The treatServer method take some times, and the answer is send before the loop is finish. How can I send the result only when the loop is come at an end ?
感谢您的帮助。
推荐答案
只要事先知道服务器数量,这很容易:
It is easy as long as you know the number of servers beforehand:
@resolveServers = (url, servers, answer) ->
result = []
count = 0
treatServer(url, server, (treatAnswer) ->
result.push(treatAnswer)
count++
answer result if count is servers.length
) for server in servers
:再次思考之后。在你的情况下,这可以更容易解决:
After thinking about it again. In your case this could be solved even easier:
@resolveServers = (url, servers, answer) ->
result = []
treatServer(url, server, (treatAnswer) ->
result.push treatAnswer
answer result if result.length is servers.length
) for server in servers
编辑2 : squint 指出,该push返回数组的长度:
Edit 2: As squint pointed out, that push returns the length of the array:
@resolveServers = (url, servers, answer) ->
result = []
treatServer(url, server, (treatAnswer) ->
answer result if result.push(treatAnswer) is servers.length
) for server in servers
如果你想保持代码的可读性,最后一次编辑可能不是最好的选择; )
If you want to maintain readability of the code, the last edit might not be the best choice ;-)
这篇关于循环结束后如何发送函数的结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!