这是我的代码。当我评论getContentKWs时,它会转到27,当我不在时,它会在11处停止.poss.s也会说27.我不知道如何解决这个问题。我把控制台日志放在各处,我看不到任何有用的东西。我认为打破forEach方法是不可能的。
getAllPosts().then((posts) => {
console.log("LENGTH", posts.length)
posts
.forEach( (post, i) => {
console.log(i, post.title)
getContentKWs(getTitleKWs(post.title), post.content)
})
})
这是功能:
function getContentKWs(titleKeywords, postContent) {
titleKeywords
.some((keyword) => { //loop through keywords to find a good anchor text
var keywordRegex = new RegExp("(" + keyword + ".+? ......+?) ", "i"); //make regex
var match = keywordRegex.exec(postContent)
if (match) {console.log("FOUND MATCH", match[0]); return match[0]} // found match
else {console.log("NO MATCH",keyword); return false} // not found
})
}
答案 0 :(得分:2)
您可能会在.then()
处理程序捕获的某处抛出异常。您可以通过在.forEach()
中添加try / catch来查看正在发生的事情。
但是,您应该在.catch()
之后始终拥有.then()
,并且也会显示例外情况。
getAllPosts().then((posts) => {
console.log("LENGTH", posts.length)
posts.forEach( (post, i) => {
console.log(i, post.title)
getContentKWs(getTitleKWs(post.title), post.content)
})
}).catch(function(err) {
console.log(err);
});
所有基于标准的.then()
实现都会自动捕获抛出的异常并将其转换为被拒绝的承诺,因此如果您不想意外地吃掉/错过异常,则应始终拥有.catch()
个处理程序在每个承诺链的某个地方。
getContentKWs()
函数出现错误的一种可能性是keyword
包含的某些字符会使这些字符在未转义时无效。如果给出了无效的正则表达式,RegExp
构造函数将抛出异常。