一、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