Promise.all() - 如何在不返回 undefined 或 value 的情况下解析()
Promise.all() - How to resolve() without returning undefined or value
我想用Promise.all()
来检查值是否在数组中。我的问题是当在数组中找不到值时,promise 返回 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
}
});
};
编辑:问题并不是关于在数组中查找值,我只是选择这个简单的例子来说明我的问题。
这
似乎是不可能的。我会将其作为"理智的默认值"归档,因为选择加入您想要的行为非常容易,但反之则不然。
例如:
Promise.all(foundValues)
.then(function(values) {
return values.filter(function(value) { return typeof value !== 'undefined';});
})
.then(function(values) {
console.log(values) // [1, 5, 10]
});
我认为不可能
Promise.all
这样做。在JavaScript Promise
中没有这样的功能。没有值,Promise
不能resolve
或reject
。
这段代码可以回答你的问题吗:values.filter(value => value !== undefined);
(Chrome,Opera,Safari,Firefox(使用中版本(和IE 9+支持Array.prototype.filter
(。
相关文章:
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- /undefined在我的404错误日志中多次出现
- RequireJS向模块传递配置总是返回undefined
- JSON数组数据返回Undefined
- 在ember/handlers中使用value和valueBinding有什么区别
- 为什么会出现错误,“UncaughtTypeError:undefined不是函数”
- Array.lenght = undefined
- mongoose.connect undefined不是一个函数
- JavaScript”;.方法“;返回undefined
- Uncaught TypeError:undefined不是函数-ember js
- Jquery - table.row(tr) is undefined
- document.getElementById().value return undefined in chrome
- Promise.all() - 如何在不返回 undefined 或 value 的情况下解析()
- 带有对象数组的Javascript;Object中的属性具有Value,返回Undefined
- Undefined不是对象(求值'value.phrase.replace')
- this.ref .something.value在react中返回undefined
- JavaScript检查value是否只有undefined、null或false
- .value返回undefined而不是正确的HTML值
- Document.getElementById.value returning Undefined
- TypeError: d.textarea1 is undefined , d.textarea1.value = sC