你需要一个for循环地方。
下面是一个使用asyncawait
库的解决方案:
const async = require('asyncawait').async;
const await = require('asyncawait').await;
const find = async(function (arr, predicate) {
let check = false, result = null;
for (let elm of arr) {
check = await(predicate(elm));
if (check) {
result = elm;
break;
}
}
return result;
});
function isItBig (n) {
return Promise.resolve(n > 3);
}
let test = [1, 2, 3, 4, 5];
find(test, isItBig).then(console.log); //prints 4
这是使用原生异步几乎相同的解决方案/伺机包含在最新版本的Node.js的:
async function find (arr, predicate) {
let check = false, result = null;
for (let elm of arr) {
check = await predicate(elm);
if (check) {
result = elm;
break;
}
}
return result;
}
async function isItBig (n) {
return n > 3;
}
let test = [1, 2, 3, 4, 5];
find(test, isItBig).then(console.log); //prints 4
你能尝试澄清你想要达到的目标,而不仅仅是说明你认为问题是什么? –
@ E.Sundin嗨!我想删除第三方库。在元素作为参数发送给异步函数(isAvail)后,遍历数组并返回与“true”匹配的第一个元素。我想跳过遍历整个数组。 –
如果你运行它异步然后什么是'第一个元素'的概念是相当模糊的。 –