很抱歉,如果我的问题对你来说很简单!我对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;
});
}
答案 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);
}
});