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

时间:2012-11-19 23:06:42

标签: javascript callback anonymous-function

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

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);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

在此功能之前,我正在使用products处理forEach(),然后在其中进行回调。这是一个很大的麻烦。已处理products并定期for,现在可以正常使用。

旧代码

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;
}