Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在coffeescript中处理递归/同步循环_Coffeescript_Aws Sdk - Fatal编程技术网

在coffeescript中处理递归/同步循环

在coffeescript中处理递归/同步循环,coffeescript,aws-sdk,Coffeescript,Aws Sdk,现在,我正试图构建一些代码来处理AmazonAPI端点返回的超过100项的列表。这需要在数据收集例程中构建页面支持。这是我第一次用coffeescript做很多事情,所以我在这里遇到了一些概念上的障碍 在异步程度较低的语言中,我尝试使用直到循环来处理: puts "Fetching launch configs" next_token = '' do if next_token.length > 0 page_list = get_autoscale_configs(next_

现在,我正试图构建一些代码来处理AmazonAPI端点返回的超过100项的列表。这需要在数据收集例程中构建页面支持。这是我第一次用coffeescript做很多事情,所以我在这里遇到了一些概念上的障碍

在异步程度较低的语言中,我尝试使用
直到
循环来处理:

puts "Fetching launch configs"
next_token = ''
do
  if next_token.length > 0
    page_list = get_autoscale_configs(next_token)
  else
    page_list = get_autoscale_configs
  if page_list.NextToken is undefined
    next_token = ''
  else
    next_token = page_list.NextToken
until(next_token.length == 0)
在coffeescript中这样做的方法让我难以理解。我现在拥有的

populate_configs=()->
处理结果=(错误数据)->
如果出错
返回错误
#做些逻辑分析
如果data.NextToken
saved.next_token=data.NextToken
其他的
已保存。下一个\u令牌=“”
return console.log“已完成对#{data.LaunchConfigurations.length}项的分析。”
如果已保存。下一个\u标记=“”
自动缩放配置{
MaxRecords:100,StartToken:下一个令牌
},(错误,数据)->处理结果(错误,数据)
其他的
自动缩放配置{
MaxRecords:100
},(错误,数据)->处理结果(错误,数据)
然后在代码主体中调用此函数:

saved={}
async.series[
(cb系列)->
已保存。下一个\u令牌=“”
async.doWhilst填充\u配置,
已保存.next_token.length>4,
(呃)->
如果出错
#抱怨它。
#否则,记录成功
返回序列_cb()
#更多回调
]
这里的想法是,
populate\u configs
被调用,然后从amazon获取一个启动配置列表。然后,数据被传递到另一个名为
process\u results
的函数中,该函数保存应该保存的内容,并为
next\u标记设置变量。它返回,并进行doWhilst测试以查看测试是否通过(保存的
字符串长度。next_token
足够长,可以作为数据);如果通过,则再次运行
populate\u configs
,如果失败,则运行第三个回调

我现在得到的是执行
populate\u configs
块的第一次迭代,但是整个执行在该点停止。的错误处理程序中没有任何调用正在执行


显然,我误解了回调是如何工作的,以及如何让自己摆脱困境。这部分需要同步。一旦我建立了这个列表,我就可以对我正在建立的列表进行各种异步操作。但我首先需要这份清单

我认为问题就在这里:
如果保存。下一个\u标记=''
。您将
next\u令牌
设置为
'
以便
填充\u配置
只运行一次。比较是用CoffeeScript中的
=
is
完成的

另外,
(err,data)->处理结果(err,data)
可以被
处理结果
替换