使用 node.js async forEachSeries 时是不是有“继续”的等效语句?
Posted
技术标签:
【中文标题】使用 node.js async forEachSeries 时是不是有“继续”的等效语句?【英文标题】:Is there an equivalent statement to 'continue' when using node.js async forEachSeries?使用 node.js async forEachSeries 时是否有“继续”的等效语句? 【发布时间】:2012-04-23 19:13:30 【问题描述】:我正在使用 node.js 异步包,特别是 forEachSeries,根据从数组中提取的参数发出一系列 http 请求。在每个请求的回调中,我都有一些 if/else 语句来响应不同类型的响应。
// This is the callback of a GET request inside of a forEachSeries
function(error, response)
if (response.results)
// Do something with results
else if (!response.results)
// Would like to use a continue statement here, but
// this is not inside of a loop
else
// Do something else
如果在上面,我可以在 else if 中使用与“继续”等效的方法吗?这在技术上不在循环内部,因此 continue 不起作用。
【问题讨论】:
您无法访问控制结构(如if/else
)中的continue
语句是有原因的。你到底想做什么?因为在我看来你需要重新审视你的逻辑......
!response.results 很可能是由于服务器的某些速率限制。目前,我可以在上面的请求所在的 forEachSeries 上返回 callback(),但是这种方法可能会丢失一些数据。只是想弄清楚 node.js 中的 forEachSeries 中是否有等价的 continue 。类似于在 jQuery $each 中使用 return true 的方式。
【参考方案1】:
既然它只是一个函数,你应该可以从中 return
获得同样的效果:
else if (!response.results)
return;
【讨论】:
这就是我的想法,虽然上面的代码有点奇怪—— else 语句永远不会被命中,在这种情况下,一个简单的 if/else 就足够了,而且可能不需要continue
类型的流控制。
@Reid - 同意,尽管在更大的代码 sn-p 中可能更有意义,例如,如果 else if
中有另一个代码分支。
@Justin - 感谢您的回复。这并没有完全解决我的问题,但它是该问题的最简单解决方案,所以我接受了。我应该发布一个更大的 sn-p。
@ Reid - 感谢您的意见。是的,else 似乎永远不会命中,但还有另一种情况,既不是 response.results 也不是 !response.results。我对小sn-p的缺点。以上是关于使用 node.js async forEachSeries 时是不是有“继续”的等效语句?的主要内容,如果未能解决你的问题,请参考以下文章
javascript node.js async-await electron
Node.js - 使用 'async' 和 'await' 和 sequelize ORM