【发布时间】:2015-10-26 15:27:36
【问题描述】:
我画了一个简单的流程图,它基本上是从互联网上抓取一些数据并将它们加载到数据库中。到目前为止,我以为我对承诺很平静,但是现在我有一个问题,我至少工作了三天,没有一个简单的步骤。
这是流程图:
考虑有一个像这样的静态字符串数组:const courseCodes = ["ATA, "AKM", "BLG",... ]。
我有一个fetch 函数,它基本上执行一个HTTP 请求,然后进行解析。然后它返回一些对象数组。
fetch 可以完美地使用预期的对象数组调用其回调,它甚至可以与更大更整洁的 Promises 一起使用。
fetch 函数应该以courseCodes 数组中的每个元素作为其参数来调用。此任务应并行执行,因为这些单独的 fetch 函数不会相互影响。
因此,回调中应该有一个results 数组(或Promises 解析参数),其中包含对象数组的数组。有了这些结果,我应该使用 results 数组中的这些对象作为其参数来调用我的 loadCourse。这些任务应该在串行执行中执行,因为它基本上查询数据库是否存在类似对象,如果不存在则添加它。
如何在 node.js 中执行此类任务?在这种情况下,我无法维护异步流程。我在 caolan/async 库和 bluebird 和 q promise 库上失败了。
【问题讨论】:
标签: node.js asynchronous concurrency