โปรแกรมแก้ไข Downcodes นำเสนอบทช่วยสอนโดยละเอียดเกี่ยวกับการตั้งค่าการหมดเวลาของ Axios บทความนี้จะเจาะลึกทุกแง่มุมของการตั้งค่าการหมดเวลาใน Axios รวมถึงการตั้งค่าพื้นฐาน การจัดการข้อผิดพลาด สถานการณ์การใช้งานจริง และการวิเคราะห์พร้อมตัวอย่าง และให้คำแนะนำในการเพิ่มประสิทธิภาพและคำถามที่พบบ่อยเพื่อช่วยให้คุณเข้าใจและใช้กลไกการหมดเวลาของ Axios และปรับปรุงเครือข่ายได้ดีขึ้น ขอความเสถียรและประสบการณ์ผู้ใช้

Axios กำหนดค่าการหมดเวลาสำหรับคำขอ HTTP โดยการตั้งค่าคุณสมบัติการหมดเวลา ซึ่งหมายความว่าหากคำขอไม่ตอบสนองภายในระยะเวลาที่กำหนด คำสัญญานั้นจะถูกปฏิเสธและจะเกิดข้อผิดพลาดขึ้น นี่เป็นสิ่งสำคัญสำหรับการจัดการเวลาแฝงของเครือข่ายและป้องกันไม่ให้แอปพลิเคชันรอการตอบสนองตลอดไป
หากต้องการตั้งค่าการหมดเวลาใน Axios คุณสามารถระบุได้โดยการส่งพารามิเตอร์เมื่อสร้างอินสแตนซ์ Axios หรือเมื่อส่งคำขอ ตัวอย่างเช่น เมื่อสร้างอินสแตนซ์ คุณสามารถตั้งค่าได้ดังนี้:
อินสแตนซ์ const = axios.create({
หมดเวลา: 1,000 // หน่วยเป็นมิลลิวินาที
-
หากต้องการตั้งค่าการหมดเวลาเมื่อส่งคำขอ คุณสามารถทำได้ดังนี้:
axios.get('/เส้นทาง', {
หมดเวลา: 2000
-
ค่า 1,000 และ 2000 ที่นี่แสดงถึงเวลาตอบสนองสูงสุดในหน่วยมิลลิวินาที เมื่อเกินเวลานี้ คำขอจะถูกขัดจังหวะและจะได้รับข้อความแสดงข้อผิดพลาดในวิธี catch ของสัญญา
Axios จะส่งข้อผิดพลาดเมื่อคำขอถูกขัดจังหวะเนื่องจากเกินเวลาที่กำหนด เมื่อตรวจพบข้อผิดพลาดนี้ นักพัฒนาจะสามารถดำเนินการบางอย่างได้ เช่น ส่งคำขออีกครั้ง แจ้งให้ผู้ใช้ทราบ เป็นต้น รหัสการจัดการข้อผิดพลาดอาจมีลักษณะดังนี้:
axios.get('/เส้นทาง', {
หมดเวลา: 1500
-
.then(ตอบกลับ => {
// จัดการกับการตอบสนองที่ประสบความสำเร็จ
-
.catch (ข้อผิดพลาด => {
ถ้า (error.code === 'ECONNABORTED') {
// การจัดการข้อผิดพลาดการหมดเวลา
} อื่น {
//การจัดการข้อผิดพลาดอื่นๆ
-
-
การตรวจสอบรหัสข้อผิดพลาดในคำสั่ง catch สามารถช่วยระบุว่าคำขอล้มเหลวเนื่องจากการหมดเวลาหรือไม่
ในสถานการณ์ทางธุรกิจจริง การตั้งค่าการหมดเวลาของคำขอ HTTP ขึ้นอยู่กับหลายปัจจัย รวมถึงสภาพเครือข่าย เวลาตอบสนองของเซิร์ฟเวอร์ ฯลฯ ดังนั้นเมื่อตั้งค่าการหมดเวลา นักพัฒนาควรกำหนดค่าได้อย่างยืดหยุ่นตามสถานการณ์จริง สำหรับคำขอที่ไม่สำคัญบางคำขอ เช่น การรายงานบันทึก คุณสามารถตั้งค่าการหมดเวลาให้นานขึ้นหรือไม่ต้องหมดเวลาก็ได้ สำหรับคำขอที่ผู้ใช้กำลังรอ เช่น การเข้าสู่ระบบ การชำระเงิน ฯลฯ ควรตั้งค่าการหมดเวลาให้สั้นลงเพื่อป้องกันไม่ให้ผู้ใช้รอเป็นเวลานาน
หลังจากกำหนดค่าการหมดเวลาแล้ว นักพัฒนายังสามารถเพิ่มประสิทธิภาพการประมวลผลคำขอด้วยวิธีอื่น เช่น การใช้กลไกการลองส่งคำขอใหม่เพื่อปรับปรุงอัตราความสำเร็จของคำขอ ตัวอย่างเช่น คุณสามารถลองส่งคำขอซ้ำโดยอัตโนมัติผ่าน Interceptor ของ Axios:
axios.interceptors.response.use (null, (ข้อผิดพลาด) => {
const config = error.config;
ถ้า (!config || !config.retry) กลับ Promise.reject(ข้อผิดพลาด);
config.retryCount = config.retryCount || 0;
ถ้า (config.retryCount >= config.retry) {
กลับ Promise.reject (ข้อผิดพลาด);
-
config.retryCount += 1;
const backoff = สัญญาใหม่ ((แก้ไข) => {
setTimeout(() => {
แก้ไข ();
}, config.retryDelay ||. 1);
-
กลับ backoff.then(() => {
กลับ axios (config);
-
-
ในตัวอย่างนี้ จำนวนการลองใหม่และความล่าช้าระหว่างการลองใหม่จะถูกควบคุมโดยการกำหนดค่าคุณสมบัติการลองใหม่และ retryDelay
การตั้งค่าการหมดเวลาของ Axios ไม่ใช่แค่การตั้งค่าตัวเลขเท่านั้น แต่ยังเกี่ยวข้องกับกระบวนการโต้ตอบระหว่างไคลเอ็นต์และเซิร์ฟเวอร์อีกด้วย ในแอปพลิเคชันส่วนหน้าสมัยใหม่ การจัดการคำขอ HTTP ที่ใช้เวลานานและการหลีกเลี่ยงสถานะการโหลดที่ไม่มีที่สิ้นสุดถือเป็นสิ่งสำคัญ กลยุทธ์การหมดเวลาที่ดีสามารถปรับปรุงประสบการณ์ผู้ใช้ ลดแรงกดดันต่อเซิร์ฟเวอร์ และป้องกันการสิ้นเปลืองทรัพยากร
การตั้งค่าการหมดเวลาอย่างเหมาะสมจะพิจารณาความเสถียรของเครือข่ายด้วย ในสภาพแวดล้อมแบบเคลื่อนที่ เครือข่ายอาจมีความผันผวนบ่อยกว่า ดังนั้นอาจต้องใช้เกณฑ์การหมดเวลาที่สูงกว่าในสภาพแวดล้อมเครือข่ายที่เสถียร
นอกจากนี้ เวลาตอบสนองของเซิร์ฟเวอร์ยังเป็นปัจจัยในการกำหนดการตั้งค่าการหมดเวลาอีกด้วย สำหรับคำขอบางคำขอที่ทราบว่าใช้เวลานานในการประมวลผล (เช่น การอัปโหลดไฟล์ขนาดใหญ่ การดำเนินการที่มีข้อมูลจำนวนมาก เป็นต้น) การหมดเวลาของไคลเอ็นต์จำเป็นต้องได้รับการปรับเปลี่ยนตามนั้น หรือกลไกการตอบรับสถานะเพิ่มเติมได้รับการออกแบบเพื่อแจ้งให้ไคลเอ็นต์ทราบ ของความคืบหน้ามากกว่าเพียงแค่ ขึ้นอยู่กับการตั้งค่าการหมดเวลา
หลังจากพูดคุยถึงวิธีที่ Axios กำหนดการหมดเวลาและทำความเข้าใจหลักปฏิบัติทั่วไปบางประการสำหรับการตั้งค่าการหมดเวลา เราจะใช้ตัวอย่างเชิงปฏิบัติหลายตัวอย่างเพื่อทำความเข้าใจเพิ่มเติม
สมมติว่าคุณกำลังพัฒนาฟังก์ชันอัพโหลดรูปภาพ และจำเป็นต้องพิจารณาวิธีตั้งค่าการหมดเวลาที่เหมาะสม ในขณะนี้ คุณอาจต้องทำการคำนวณแบบไดนามิกตามขนาดภาพและความเร็วในการอัพโหลดของไคลเอ็นต์
ฟังก์ชั่นอัพโหลดรูปภาพ (ไฟล์) {
// สมมติว่าเวลาอัปโหลดโดยประมาณ 2 วินาทีต่อ MB
หมดเวลา const = file.size / 1024/1024 * 2000;
axios.post('/upload', ไฟล์, { หมดเวลา })
.then(ตอบกลับ => {
// อัพโหลดรูปภาพสำเร็จ
-
.catch (ข้อผิดพลาด => {
// เกิดข้อผิดพลาดในการจัดการตรรกะ อาจหมดเวลาและคุณต้องลองอีกครั้ง
-
-
ในตัวอย่างนี้ เราตั้งค่าการหมดเวลาแบบไดนามิกตามขนาดไฟล์ วิธีนี้เหมาะสำหรับการอัปโหลดไฟล์ขนาดใหญ่หรือการดำเนินการอื่นๆ ที่ใช้เวลานาน
โดยสรุป Axios มอบวิธีที่ยืดหยุ่นในการตั้งค่าการหมดเวลาสำหรับคำขอ HTTP ซึ่งเป็นคุณสมบัติที่สำคัญเพื่อให้แน่ใจว่าแอปพลิเคชันสามารถจัดการกับปัญหาต่างๆ เช่น การรอนานและความไม่เสถียรของเครือข่ายได้อย่างราบรื่น การใช้การตั้งค่าการหมดเวลาอย่างถูกต้อง รวมกับการจัดการข้อผิดพลาดและกลยุทธ์การลองใหม่ สามารถปรับปรุงความทนทานและประสบการณ์ผู้ใช้ของแอปพลิเคชันได้อย่างมาก
จะตั้งค่าการหมดเวลาใน axios ได้อย่างไร?
จะตั้งค่าการหมดเวลาในคำขอ axios ได้อย่างไร? เมื่อใช้ axios เพื่อส่งคำขอ http คุณสามารถตั้งค่าการหมดเวลาโดยการตั้งค่าพารามิเตอร์การหมดเวลา ตัวอย่างเช่น หากเราต้องการให้คำขอหมดเวลาใน 5 วินาที เราสามารถตั้งค่าพารามิเตอร์การหมดเวลาเป็น 5,000 ในหน่วยมิลลิวินาที หากคำขอไม่เสร็จสมบูรณ์ภายในระยะหมดเวลา Axios จะแจ้งข้อผิดพลาด รหัสตัวอย่างจะเป็นดังนี้:
axios.get('/api/some-endpoint', { หมดเวลา: 5000}).then (ตอบกลับ => { // จัดการการตอบสนอง}).catch (ข้อผิดพลาด => { // จัดการข้อผิดพลาด});การตั้งค่าการหมดเวลามีผลกระทบต่อคำขอ axios อย่างไร การตั้งค่าการหมดเวลามีความสำคัญมากสำหรับคำขอ axios หากคำขอไม่เสร็จสมบูรณ์ภายในกำหนดเวลา Axios จะขัดจังหวะคำขอและแสดงข้อผิดพลาด สิ่งนี้สามารถหลีกเลี่ยงการรอคำตอบอย่างไม่มีที่สิ้นสุด และปรับปรุงประสบการณ์ผู้ใช้และประสิทธิภาพของโปรแกรม คุณสามารถตั้งค่าการหมดเวลาที่เหมาะสมตามความต้องการที่แท้จริงเพื่อให้แน่ใจว่าคำขอจะเสร็จสมบูรณ์ภายในเวลาที่เหมาะสม แต่ไม่สั้นเกินไปที่จะทำให้คำขอหมดเวลาบ่อยครั้ง
วิธีจัดการกับข้อผิดพลาดการหมดเวลาคำขอ axios เมื่อคำร้องขอ axios หมดเวลา ข้อผิดพลาดสามารถถูกบันทึกได้โดยใช้คำสั่ง catch และประมวลผลตามนั้น คุณสามารถเลือกส่งคำขออีกครั้ง แสดงข้อความแสดงข้อผิดพลาด หรือดำเนินการตรรกะอื่นๆ ได้ ตัวอย่างเช่น:
axios.get('/api/some-endpoint', { หมดเวลา: 5000}).then (ตอบกลับ => { // ตอบกลับกระบวนการ}).catch (ข้อผิดพลาด => { ถ้า (error.code === 'ECONNABORTED' ) { // คำขอหมดเวลา // ดำเนินการตรรกะการประมวลผลที่เกี่ยวข้อง } else { // ข้อผิดพลาดอื่น ๆ // ดำเนินการตรรกะการประมวลผลที่เกี่ยวข้อง }});หมายเหตุ: ข้างต้นคือวิธีตั้งค่าการหมดเวลาโดยใช้ axios การหมดเวลาเป็นทางเลือกและสามารถตั้งค่าได้ตามความต้องการเฉพาะ การตั้งค่าการหมดเวลามีความสำคัญมากต่อประสิทธิภาพและความเสถียรของคำขอเครือข่าย และจำเป็นต้องปรับเปลี่ยนอย่างสมเหตุสมผลตามสถานการณ์จริง
หวังว่าบทความนี้จะช่วยคุณได้! หากคุณมีคำถามใด ๆ โปรดอย่าลังเลที่จะถาม