【发布时间】:2016-02-15 15:50:19
【问题描述】:
我想使用Promise.all() 来检查一个值是否在数组中。我的问题是当在数组中找不到值时,承诺返回undefined,但我只想拥有在我的数组中找到的值。
var array = [1,5,10];
var values = [1,2,3,4,5,6,7,8,9,10];
var foundValues = [];
values.forEach(function(value) {
foundValues.push(isInArray(array, value));
});
Promise.all(foundValues).then(function(values) {
console.log(values) // [1, undefined, undefined, undefined, 5, undefined, undefined, undefined, undefined, 10 ]
});
function isInArray(array, value) {
return new Promise(function(resolve, reject) {
if (array.indexOf(value) > -1) {
resolve(value); //here the value is returned
} else {
resolve(); //here undefined is returned
}
});
};
编辑:这个问题并不是真的要在数组中找到一个值,我只是选择这个简单的例子来说明我的问题。
【问题讨论】:
-
您意识到有更好的方法来检查一个值是否在数组中,对吧?
-
我假设您正在将此作为更复杂异步代码的示例,但真正的问题是什么?如果您没有找到任何值,那么
resolve()有什么问题,因为您没有要解决的问题? -
values = values.filter(x => typeof x !== 'undefined')?
标签: javascript promise