2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
你需要先等待所有的承諾。然后,您可以打印結(jié)果。另外,要返回任何內(nèi)容,您需要使函數(shù)異步,然后所有外部代碼也必須是異步的!
async function getBrokenLinks (linksArr) {
let brokenLinks = 0
await Promise.all(linksArr.map(link => (async () => {
try {
const res = await fetch(link.href)
if (res.status != 200) brokenLinks++
} catch (e) {
brokenLinks++
}
})()))
console.log(brokenLinks)
return brokenLinks
}

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可以使用“全部承諾”來等待所有承諾被推翻:
/*
Promise.all([promise1, promise2,..])
.then(function() {
// all promises have been resolved
})
*/
function getBrokenLinks(linksArr) {
let links = linksArr
let brokenLinks = 0
let promises = []
links.forEach(link => {
// save promise to push onto array
let promise = fetch(link.href)
.then(res => {
if (res.status != 200) {
brokenLinks++
}
})
promises.push(promise)
})
return Promise.all(promises)
.then(() => {
return brokenLinks
})
}
// Calling code:
/*
getBrokenLinks([])
.then(console.log)
*/
添加回答
舉報(bào)