【发布时间】:2014-09-29 18:16:44
【问题描述】:
async.js 遇到了一个奇怪的问题。我正在解释整个场景。我在数据库中有两个表。让一个是X,有 5 行,另一个是 Y,有 2840 行。由于我的项目位于sails.js,因此我使用waterline 作为ORM。我在async.series 中运行三个函数。第一个用于从表X 中获取所有行,第二个用于从表Y 中获取所有行。在第三个函数中,我在第二个函数中获取的Y 的所有行上运行async.eachSeries,并调用外部POST api。所以整体流程是,
async.series([
function( callback1 ){
// Fetch all rows from `X`
},
function( callback1 ){
// Fetch all rows from `Y`
},
function( callback1 ){
async.eachSeries(allRowsOfY, function(item, callback2){
// Call an external POST api.
},
function(err){
});
},
],
function( err ){
// Do something
});
问题是,即使Y 有 2840 行,也只进行了大约 600 个 api 调用,然后async.series 从一开始就开始运行。而这件事还在继续。为什么会这样?
【问题讨论】:
-
您必须自己进行更多调试。要么你的计数已经关闭,要么有什么东西正在停止 eachSeries。否则,您会在 api 端点处受到某种速率限制。
-
根据我的经验,当您多次调用其中一个
callback1s 时,async很容易失败。有没有可能发生这种情况? -
我从每个 async.series 函数中只调用一次
callback1。 -
@taufique frome
allRowsOfY数组从何而来?
标签: node.js asynchronous sails.js waterline async.js