У меня есть следующие функции:Возвращаясь из анонимной функции не будет работать, даже если он не ASync
function filterDesiredURLs(tweet) {
tweet.entities.urls.forEach((url) => {
desiredURLs.forEach((regexPattern) => {
if (regexPattern.test(url['expanded_url'])) {
console.log('hello, im returning');
return true;
}
})
})
}
И я звоню это так:
console.log(filterDesiredURLs(tweet));
Где твит определенный объект. Я вижу, что функция действительно возвращается, потому что я вижу вывод hello, im returning
в консоли, но console.log(filterDesiredURLs(tweet));
печатает undefined
. Я ожидал бы этого для анонимных функций, переданных как обратные вызовы для асинхронных операций, но это не async, поэтому возврат должен работать. Что происходит?
Вы возвращения из внутренней функции, а не внешней функции. 'Array # forEach' игнорирует возвращаемое значение его обратного вызова. – 4castle
Похоже, что ваш код должен использовать ['Array # filter'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) и [' Array # some'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some) вместо двух циклов 'forEach'. – 4castle