猫鼬参考对象找到

柴·米沙里(Shai Mishali)

我在循环中找到了:

for(var idx in items){
    var item = items[idx];

    Model.find({'_id': item.id}, function(err, matches){
          console.log(item); // Points to the last item in items instead of
                             // expected item, since find is asynchronous
    });
}

如您所见,由于find是异步的,因此无法获得对itemvar的可靠引用

我可以继续进行操作,并items通过回调内的匹配对象在数组中手动查找它,但这似乎并不是一种有效的方法。

如果有任何方法可以将对象“附加”到调用中,那么我可以通过很棒的回调将其取回。

有任何想法吗 ?

安德烈亚斯(Andreas Hultgren)

您需要的是一个闭包,因为循环以及item随之而来的闭包将在调用任何回调之前完成。

for(var idx in items){
  (function(item){
    Model.find({'_id': item.id}, function(err, matches){
      console.log(item);
    });
  })(items[idx]);
}

这应该与以下内容大致相同(假设项目是一个数组):

items.forEach(function(item){
  Model.find({'_id': item.id}, function(err, matches){
    console.log(item);
  });
})(items[idx]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章