【发布时间】:2016-05-25 11:32:09
【问题描述】:
我遇到了这个问题:我从 API 获得了一个项目列表,我必须将它们保存在数据库中。对于他们每个人,我都必须显示一些反馈,例如“-项目名称。保存在数据库中..”,保存后显示“成功!下一步...”。
我正在使用异步链接来遍历数组中的项目并保存在数据库中。问题是消息不同步。它显示了一堆项目名称消息和一堆成功消息。我的代码如下。
var saveInDB = function saveInDB(item, callback) {
console.log(' - ' + item.market_name + ' .......');
// Simulating some delay
setTimeout(function () {
console.log('Success! Next....');
callback(null);
}, 3000);
}
util.getJsonFromUrl(API_URL, function (err, data) {
if (err || !data || !data.results || data.results.length == 0)
{
console.log('BAD');
}
else
{
console.log('Items downloaded...');
async.each(
data.results,
function (item, callback) {
saveInDB(item, callback);
},
function (err) {
if (err) {
console.log('ERROR');
}
else {
console.log('Success!');
}
}
);
}
});
是的,我曾尝试使用 .series,但我无法让它工作。我一直在寻找示例,但我仍然不知道如何像在 .each 中那样简单地传递项目。
你能帮帮我吗?提前感谢您的帮助。
【问题讨论】:
-
你试过使用 async.eachSeries 吗?
-
@MedetTleukabiluly 好点,他必须使用 async.eachSeries 因为 async.each 将函数并行应用于每个项目并保证没有顺序。
标签: javascript node.js asynchronous async.js