0

首先,我在 json 中有一个数据数组,例如 var a = [{'name':'jack','age':15},{'name':'tom','age':30}] ;

更重要的是,我有一个基于 mongodb 的数据库,它是在 mongoose 中实现的。在数据库内部,有一个用户集合,存储用户的其他信息。

所以现在,我想查询上面显示的人员列表中的信息。

for(var i=0;i<a.length;i++){
    console.log('time schedule '+"   "+a[i].name+"   "+a[i].age);                               
    model.findOther(a[i].name,function(err,data){ 
        // I can get the data from mongodb  
          console.log("time schedule data:"+"   "+data.otherinfo+"  ");
       --------------------------------------------------------------------------------
       //however the problem arises that I can not get the a[i].age inside the callback
          console.log(a[i].age );

    });                                             
}

我知道获取正确的数据是错误的,所以任何人都可以帮助我如何以异步方式编写代码?

4

1 回答 1

2

您必须将函数放入闭包并将相关变量作为参数推入其中:

for(var i=0;i<a.length;i++){
    console.log('time schedule '+"   "+a[i].name+"   "+ai].age);
    (function(item){
        model.findOther(item.name,function(err,data){ // <-- here you could use 'a[i]' instead of 'item' also
            console.log("time schedule data:"+"   "+data.otherinfo+"  ");
            console.log(item.age );  // <-- here you must use 'item'
        });
    }(a[i])); // <-- this is the parameter of the closure
}
于 2013-03-06T08:50:20.873 回答