-1
我正在使用bluebird
& lodash
并试图弄清楚如何在迭代对象后返回承诺?例如,我想添加一个键/值对每个对象,我想打印结果后,再为其添加一个键/值对每个对象:如何在javascript中迭代对象后返回承诺
var cars = {
audi:[
{
model:'r8',
year:'2012'
},
{
model:'rs5',
year:'2013'
}
],
ford:[
{
model:'mustang',
year:'2012'
},
{
model:'fusion',
year:'2015'
}
],
kia:[
{
model:'optima',
year:'2012'
}
]
}
_.forOwn(cars, function(value, key) {
key.processed = true;
}).then(function(cars) {
//print modified cars object here
console.log(cars);
});
有人能帮忙吗?
在此先感谢!
'_.forOwn'是同步 - 摆脱'.then(功能(汽车){'和最后的'});' - 等voilà - 没有承诺需要 –
以前的评论者说,尝试从简单的迭代返回承诺没有任何好处,它不是异步的 - 它的运行速度与javascript引擎可以执行的速度一样快。但是,如果你所说的是,迭代需要启动一系列异步的进程,那么这与你实际询问的那个完全不同。在这种情况下,你可以做一些'map'来返回promise数组(每个元素都有一个),然后在每次promise后返回,检查它是否是最后一个,并且发出'done'的承诺。 – ErikE
所以要确认 - '_.forOwn'总是会在'console.log(cars)'之前完成。 @ErikE在对象上做“地图”工作吗?我以为'map'只适用于阵列... –