У меня есть класс JavaScript с некоторыми async
функциями внутри.
Если в этом массиве число больше 10, я ожидаю, что функция .some()
вернет true,но если массив не содержит чисел больше 10, я ожидаю, что он вернет false.
Проблема, с которой я сталкиваюсь, заключается в том, что вызов функции всегда возвращает true
независимо от того, существует ли число больше 10в массиве.
class Blah {
async doStuff() {
const nums = [1, 2, 3, 4, 5, 6];
const asyncResult = await nums.some(async num => {
if (num > 10) {
const allowed = await this.isAllowed(num);
if (allowed) {
return true;
}
}
});
console.log(asyncResult);
}
async isAllowed(num) {
console.log(`${num} is in the array`);
return true;
}
}
const b = new Blah();
b.doStuff(); // This return true but it should be returning false
В настоящее время возвращается true
, но, как вы можете видеть, массив не имеет числа больше 10
Если я удаляю async
извнутри функции .some()
тогда, похоже, она работает, но эта функция должна быть async
, потому что мне нужно await
при вызове функции this.isAllowed
, и это тоже функция async
.