async.times 函数不会触发回调

Posted

技术标签:

【中文标题】async.times 函数不会触发回调【英文标题】:async.times function does not fire the callback 【发布时间】:2015-03-29 18:00:09 【问题描述】:

我正在努力使async 正常工作。在这个例子中,我想创建并保存多个mongoose对象,并在工作完成时获取回调。

即使对象保存在数据库中,回调也不会触发。控制台日志也不会显示。谁能帮我找出我错过了什么?

var number_of_objects = 5;
async.times(number_of_objects, function(n, next)
    var myObject = new Object( random_string : Math.random().toString(36).substring(7), isActive: false );
    myObject.save(n,function(err,object) 
        console.log("saved");
        console.log(n);
        next(err,object);
    );
,function(err, objects) 
    console.log(objects);
    res.sendStatus(200);
);

在此先感谢

【问题讨论】:

您确定没有发生错误吗?您每次都在创建 myObject,但您保存了 n 对象 没有错误,创建了 5 个具有不同 random_string 的新对象,但没有回调。我应该在我的代码中更改什么?感谢您的宝贵时间 【参考方案1】:

您的代码中的问题是mongoosesave 函数只接受一个参数 - 回调函数。

所以你应该修改你的代码如下:

myObject.save(function(err,object) 
    console.log("saved");
    console.log(n);
    next(err,object);
);

【讨论】:

是的..这就是问题所在。 async.times 的示例代码让我感到困惑。谢谢! @cor 我检查了文档,他们确实对times 函数感到困惑

以上是关于async.times 函数不会触发回调的主要内容,如果未能解决你的问题,请参考以下文章

FB.getLoginStatus 不会触发回调函数

如果回调函数没处理完,又产生了触发该回调函数的事件,怎么处理?

Android Facebook 登录回调永远不会触发

来自 Cordova iOS 插件的后续回调不会触发

jQuery.getJSON 不会触发回调

addEventListener('fetch', callback) 在 ReactJS 中永远不会触发回调