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

calling a synchronous function (with call back) in foreach with the help of async.each

本文关键字:函数 同步 回调 foreach each async 帮助 调用      更新时间:2023-09-26

对不起,如果我的问题对你来说很简单!我对 Node 和回调很陌生!我有一个名为"find"的异步函数(带有回调),我还有一个称为模型的数组;所以我想对模型中的每个模型同步调用这个"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;
        });
   }

async的方法会将一个回调function传递给iterator,在本例中find(),它期望被调用以了解何时继续。

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