我使用 promise.all 得到了一个链接数组的结果,我如何计算数组中的链接?
I got the result of an array of links using promise.all, How can I count the links in the array?
function validateAndCountLinks(arrayLinks) {
let promises = arrayLinks.map((aLink) =>
fetch(aLink)
.then((response) => {
return {
url: response.url,
status: response.status,
text: response.statusText,
};
})
.catch((error) => {
return { error: error.message };
})
);
return Promise.all(promises).then((result) => result);
}
您可以在map中获取当前循环的索引,但需要传递一个额外的参数。在最后一个循环中将 i+1 传递到 return 对象中的某处。
.map((e, i)...
或者您有什么理由不能 arrayLinks.length?
如果您的目标是检查一系列链接以查看它们 return 成功 状态和 return 计数,您应该使用Response.ok
属性.
例如
return Promise.all(arrayLinks.map(link => fetch(link)))
.then(responses => responses.filter(({ ok }) => ok).length)
我不会费心去捕获任何失败的 fetch
承诺,因为这通常表示存在更大的问题(例如网络错误、无效权限等),您希望将其过滤到调用者以进行正确的错误处理.
validateAndCountLinks(links).then(count => {
console.log(`${count} valid links`)
}).catch(err => {
console.error('Networking issue', err)
})
function validateAndCountLinks(arrayLinks) {
let promises = arrayLinks.map((aLink) =>
fetch(aLink)
.then((response) => {
return {
url: response.url,
status: response.status,
text: response.statusText,
};
})
.catch((error) => {
return { error: error.message };
})
);
return Promise.all(promises).then((result) => result);
}
您可以在map中获取当前循环的索引,但需要传递一个额外的参数。在最后一个循环中将 i+1 传递到 return 对象中的某处。
.map((e, i)...
或者您有什么理由不能 arrayLinks.length?
如果您的目标是检查一系列链接以查看它们 return 成功 状态和 return 计数,您应该使用Response.ok
属性.
例如
return Promise.all(arrayLinks.map(link => fetch(link)))
.then(responses => responses.filter(({ ok }) => ok).length)
我不会费心去捕获任何失败的 fetch
承诺,因为这通常表示存在更大的问题(例如网络错误、无效权限等),您希望将其过滤到调用者以进行正确的错误处理.
validateAndCountLinks(links).then(count => {
console.log(`${count} valid links`)
}).catch(err => {
console.error('Networking issue', err)
})