一、sleep函数该如何实现的
sleep函数,将程序执行挂起一段时间,阻塞程序的运行
ES6方案:javascript
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function test() {
console.log("Hello");
await sleep(1000);
console.log("World");
}
test();
ES5死循环阻塞:java
function sleep(ms) {
ms += new Date().getTime();
while (new Date().getTime() < ms) {}
}
function test2() {
console.log("Hello");
sleep(1000);
console.log("World");
}
test2();
二、HTTP状态码302和304的区别
-
1** 信息状态码服务器
-
2** 成功状态码async
- 200 OK 请求成功
- 201 已建立
- 202 已接受
- 203 非受权信息
- 204 无内容
- 205 重置内容
- 206 部份内容
-
3** 重定向函数
- 300 多种选择
- 301 Moved Permanently 永久重定向
- 302 Found 临时重定向
- 303 查看其它地址
- 304 Not Modified 未修改
- 305 使用代理
-
4** 客户端错误spa
- 400 Bad Request 请求的语法错误
- 401 Unauthorized 要求身份验证
- 403 Forbidden 服务器拒绝执行该请求
- 404 Not Found 未找到资源
-
5** 服务器错误线程
- 500 Internal Server Error 服务器内部错误
- 501 服务器不支持该功能,没法完成请求
- 502 Bad Gateway 服务器做为网关服务器执行请求时,从远程服务器接收到了无效的响应
- 503 Service Unavailable 系统维护
- 504 Gateway Time-out 超时
- 505 HTTP Version not supported 服务器不支持请求的HTTP协议版本
三、多路复用和长链接是什么意思,区别,以及如何设置长链接
HTTP1代理
- 长链接
- 若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能得到执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞
HTTP2code
- 多路复用
- 多个请求可同时在一个链接上并行执行。某个请求任务耗时严重,不会影响到其它链接的正常执行
如何实现长链接?blog
