node.js - NodeJS V8 将附加参数传递给回调

标签 node.js callback mongoose

我使用 NodeJS、ExpressJS、MongoDB(使用 Mongoose)编写应用程序...

一切都很完美,但是,当我有一个循环来获取记录并对结果执行某些操作时,如下所示:

for(var i = 0; i < 10; i++) {
   recods.findOne({number: i}, function(err,doc){
        ...
   });
}

回调函数范围内的变量“i”是通过引用传递的,结果不是期望的。

当回调被调用时,循环已经运行并且变量已经改变。

如果我尝试将参数作为匿名函数传递,则不起作用,因为它替换了所需的参数:

for(var i = 0; i < 10; i++) {
   records.findOne({number: i}, (function(err,doc){
        ...
   })(i));
}

这样,我就失去了“err,doc”参数,

我能做些什么来解决这个大问题?

最佳答案

您可以将其绑定(bind)到回调以创建第一个参数设置为 i 的部分函数:

for (var i = 0; i < 10; i++) {
  records.findOne({number: i}, function(i, err, doc) {
    ...
  }.bind(records, i));
}

关于node.js - NodeJS V8 将附加参数传递给回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20316553/

相关文章:

javascript - 使用外部 JavaScript 库的 WebStorm 自动完成

javascript - Javascript 和 Node 中的 JSON 解析

c++ - 如何使用 lambda 来进行 std::invoke 惰性求值?

c - OpenSSL 识别 cookie 在多线程中使用 DTLS session /连接验证回调

javascript - 如何仅选择 Mongoose.find 中数组的一个元素

javascript - 使用node js关闭.exe文件

javascript - 如果回调存在则执行 Callback(obj) 否则返回对象

node.js - mongodb可以查询当月、季度、学期的销售额吗?

node.js - Mongoose 中的子文档和嵌套对象有什么区别?

node.js - 如何保护生产中的 mongoDB 连接