Filtrar una matriz con una función que devuelve una promesa
Dado
let arr = [1,2,3];
function filter(num) {
return new Promise((res, rej) => {
setTimeout(() => {
if( num === 3 ) {
res(num);
} else {
rej();
}
}, 1);
});
}
function filterNums() {
return Promise.all(arr.filter(filter));
}
filterNums().then(results => {
let l = results.length;
// length should be 1, but is 3
});
La longitud es 3 porque se devuelven Promesas, no valores. ¿Hay alguna manera de filtrar la matriz con una función que devuelve una Promesa?
Nota: Para este ejemplo, fs.stat ha sido reemplazado por setTimeout, veahttps://github.com/silenceisgolden/learn-esnext/blob/array-filter-async-function/tutorials/array-filter-with-async-function.js para el código específico