js-面试-并发,记录下并发,并行,串行
区分 并发 并行 串行
之前很容易搞混 并发和并行,所以记录一哈
并发
两个或多个事件在同一时间,间隔发生。
并行
两个或多个事件在同一时间执行
或者并发
是同一实体上的多个事件而并行
是不同实体上的多个事件。
来看一个并发的面试题
看前试试水
const urls = Array.from({ length: 10 }).map((v, i) => i);
const sleep = url => new Promise(resolve => setTimeout(resolve, Math.random() * 3000 + 1000))
const sendRequest = (urls, limit, callback) => {
const copyUrls = urls.slice(0)
let index = 0;
const requestUrl = () => {
index += 1;
console.log('当前并发', index, '- - - - - -');
sleep(copyUrls.shift())
.then(res => {
index -= 1;
console.log('剩余并发', limit - index, '- - - - - -');
if(copyUrls.length) requestUrl();
else if(index === 0) callback?.();
})
if(index < limit) requestUrl();
}
requestUrl();
}
sendRequest(urls, 4, () => console.log('run callback')));
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 kshao-blog-前端知识记录!
评论