async/await - 8.在for循环中正确的使用await
const fetch = require('node-fetch')
const bluebird = require('bluebird')
async function getZhihuColumn(id) {
await bluebird.delay(1000)
const url = `https://zhuanlan.zhihu.com/api/columns/${id}`
const response = await fetch(url)
return await response.json()
}
循环中的串行
const showColumnInfo = async() => {
console.time('showColumnInfo')
const names = ['qianduanzhidian', 'FrontendMagazine']
for (const name of names) {
const column = await getZhihuColumn(name)
console.log(`name:${column.name}`)
console.log(`description:${column.description}`)
}
console.timeEnd('showColumnInfo') // 4757.181ms
}
showColumnInfo()
循环中的并行
const showColumnInfo = async() => {
console.time('showColumnInfo')
const names = ['qianduanzhidian', 'FrontendMagazine']
const promises = names.map(x => getZhihuColumn(x))
for (const promise of promises) {
const column = await promise
console.log(`name:${column.name}`)
console.log(`description:${column.description}`)
}
console.timeEnd('showColumnInfo') // 2615.484ms
}
showColumnInfo()