我很好奇你如何将承诺数组的Promise地图展平。我有一个函数Promise.maps一组值,他们自己承诺(需要解决)并返回一个数组。所以,我得到了类似的东西:[[1,2,3],[1,2,3]等等]我之后一直在使用lodash / underscore ._flatten,然而,我是确定有一种更清洁的方法。
return Promise.map(list, function(item) {
return new Promise(function(res, rej) {
return res([1, 2, 3]);
});
});
答案 0 :(得分:12)
我们在bluebird中没有public void executeAjax(ActionEvent event){
ValueHolder comboBox = (ValueHolder) event.getComponent().getParent();
comboBox .getValue();
}
,如果您想要结果,可以flatMap
:
.reduce
虽然lodash flatten也可以用作:
return Promise.map(list, function(item) {
return Promise.resolve([1, 2, 3]); // shorter than constructor
}).reduce(function(prev, cur){
return prev.concat(cur);
}, []);
也可以教蓝鸟这样做(如果你是图书馆作者 - 看看如何获得没有碰撞的新副本):
return Promise.map(list, function(item) {
return Promise.resolve([1, 2, 3]); // shorter than constructor
}).then(_.flatten);
可以让你这样做:
Promise.prototype.flatMap = function(mapper, options){
return this.then(function(val){
return Promise.map(mapper, options).then(_.flatten);
});
});
Promise.flatMap = function(val, mapper, options){
Promise.resolve(val).flatMap(mapper, options);
});