在async.each的帮助下在foreach中调用同步函数(带回调)

时间:2014-11-23 19:48:24

标签: javascript node.js asynchronous express

很抱歉,如果我的问题对你来说很简单!我对Node和回调都很陌生!我有一个异步函数(带回调),名为" find",我还有一个叫做模型的数组;所以我想同步调用这个"找到"在模型中使用每个模型并将结果附加到resultFound:

感谢您的帮助!如果您需要更多说明,请告诉我。

      st.find(param1, model, param2, param3, function (err, data) {
            if (err) {
                res.json(400, err);
            } else {
                res.json(200, data);
            }
        });

这是我的尝试(我相信在st.find()中返回是错误的;但我刚刚提到我尝试给你一个洞察我试图做的事情!):

   var models = ["test1", "tes2"];
    var resultFound = [];
    async.each(models, find, function (err, data) {
        resultSearch.push(data);

    });

    function find(model) {
        st.find(param1, model, param2, param3, function (err, data) {
            return data;
        });
   }

1 个答案:

答案 0 :(得分:2)

async的方法会将回调function传递给iterator,在这种情况下为find(),它会被调用以知道何时继续。< / p>

function find(model, callback) {
    st.find(param1, model, param2, param3, function (err, data) {
        callback(err, data);
    });

    // or possibly just:
    // st.find(param1, model, param2, param3, callback);
}

虽然async.each()未定义为期望data提供给回调。

接受data的方法是async.map(),它已经创建了一个可以用作resultFound的新集合。

var models = ["test1", "tes2"];

async.map(models, find, function (err, resultFound) {
    if (err) {
        res.json(400, err);
    } else {
        res.json(200, resultFound);
    }
});