由于以下代码是异步的,我认为“recipeData”数组的生命周期不足以超过异步回调,所以我在全局数组中复制了数据,但我仍然收到相同的错误“类型错误:无法读取未定义的属性‘_id’”。这是代码:
var tempArray;
function getAllRecipes( db, callback )
{
query( db, {}, 'recipes', function( err, recipeData )
{
tempArray = recipeData.slice();
if( err || !tempArray.length )
callback( err );
else
{
var taskArr = [];
for( var i=0; i < tempArray.length; i++ )
{
taskArr.push( function( iCallback )
{
getRecipeNotes( db, tempArray[ i ]._id, function( err2, noteData )
{
if( err2 )
iCallback( err2 );
tempArray[ i ].notes = noteData;
iCallback();
});
});
}
taskArr.push( function( err3 )
{
callback( err3, tempArray );
});
async.parallel( taskArr );
}
});
}
调用“getRecipeNotes”时发生错误。
谁能帮我弄清楚我哪里出错了?
谢谢。
最佳答案
另一种选择是使用 let i 代替 var i。不过,它是一项较新的功能(由去年发布的 ES6 标准化)并且在浏览器支持方面存在一些限制。 – 乔纳森·洛诺夫斯基 2 天前
let 被 Node 4.x 及更高版本支持,前提是你“使用严格”;以及(这是 V8 目前强加的临时限制)。如果您使用的是较低版本(0.12.x 等),--harmony 命令行标志可能会启用它。 – 乔纳森·洛诺夫斯基 2 天前
关于javascript - 使用 Async.parallel 我的参数的生命周期不会超过使用 MongoDB 的 NodeJS 中的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35673129/