Javascript 将变量传递给anon函数/回调函数

Javascript 将变量传递给anon函数/回调函数,javascript,callback,anonymous-function,Javascript,Callback,Anonymous Function,我正在尝试将product传递到find()函数中,该函数包含一个.toArray()匿名函数,该函数同时包含错误和数组。不幸的是,整个find()函数在迭代中运行,只有第一个值进入。如何将产品传递给回调 var find = function(product,callbacks){ foos.find({ "foo": product.bars, }).toArray(function (error, array) { if(error){

我正在尝试将
product
传递到
find()
函数中,该函数包含一个
.toArray()
匿名函数,该函数同时包含
错误
数组
。不幸的是,整个
find()
函数在迭代中运行,只有第一个值进入。如何将
产品
传递给
回调

var find = function(product,callbacks){
    foos.find({
        "foo": product.bars,
    }).toArray(function (error, array) {
        if(error){
            callbacks.error(product,error);
        } else if (array.length == 0) {
            callbacks.none(product);
        } else {
            callbacks.exists(product);
        }
    });
}

在此函数之前,我使用
forEach()
处理
产品
,然后在其中的回调中运行此函数。这是个大麻烦。使用常规的
for
处理
产品
,现在可以使用了

旧代码 新代码
我不太明白这个问题。你的代码看起来应该可以工作。你能给我们看看那些
find
toArray
函数吗?你使用的是公共库吗?不清楚你在做什么,因为它取决于
foos.find
的规范(它不像jQuery的
find
方法)它的返回值
toArray
方法所做的一切
var products = function(data,callback){
    products.forEach(function(product){
        insert.product_id = product.id;
        var variants = product.variants;
        variants.forEach(function(variant){
            insert.sku = variant.sku;
            insert.variant_id = variant.id;
            return callback(insert);
        });
    });
}
var products = function(data){
    var insert = [];
    var products = data.products;
    for(var pKey in products){
        var product = products[pKey];
        var variants = product.variants;
        var set = {}
        set.product_id = product.id;
        for(var vKey in variants){
            var variant = variants[vKey];
            set.sku = variant.sku;
            set.variant_id = variant.id;
            insert.push(set);
        }
    }
    return insert;
}