【发布时间】:2018-05-18 05:06:58
【问题描述】:
我正在使用 loadash map 函数对数据进行一些结构化。数据返回一组 id,我需要为其查询 db 并将结果添加到地图然后返回,但数据稍后返回,我的函数首先返回。如何让map的返回等待然后在函数中返回。
let result = _.chain(value)
.groupBy('pubId')
.pairs()
.map(function(currentItem) {
let item = _.object(_.zip(['ID', 'targetting'], currentItem));
propsToBeDeleted.forEach(function(prop) {
item.targetting.forEach(d => {
item.publishername = d.RTB.name;
item.type = d.type;
delete d[prop];
});
});
item.targetting.map(d => {
if (d.type == 15) {
d.name = Object.keys(JSON.parse(d.value));
d.value = Object.values(JSON.parse(d.value))[0];
item.dspIds = [];
}
if (d.type == 16) {
let value = JSON.parse(d.value);
d.name = Object.keys(JSON.parse(d.value)).filter(d => d != 'profileId');
d.value = value;
item.dspIds = d.value.profileId;
dspAccount.find({where: {id: 139}}, (err, data) => {
// async call wait here to get data and attach to item
item.x = data ;
});
delete d.value.profileId;
d.value = JSON.stringify(d.value);
}
});
return item;
})
.value();
我也尝试过使用承诺
promises.push(new Promise((resolve, reject) => {
if (data.id) {
XX.upsertWithWhere({id: data.id}, payload, (err, data) => {
if (err) {
return reject(err);
}
return resolve(data);
});
}
}));
});
Promise.all(promises).then((data) => {
callback(null, data);
}, err => {
callback(err);
});
更新 我已经列出了无效的 promise .all 方法。所以不能叫重复
【问题讨论】:
-
@VipinKumar 我已经列出了无效的 promise .all 方法。所以不能叫重复
-
我想,我说过这是一个可能的重复而不是重复。检查重复是第一件事。请不要在您的问题中标记任何人。
-
你能检查一下吗,如果你能帮忙的话会很高兴
-
你使用的是哪个 node.js 版本?
标签: javascript node.js promise es6-promise