Hướng dẫn recursive api call javascript - đệ quy api gọi javascript
Điều này sẽ giúp bạn nếu để bạn thực hiện một nhiệm vụ bạn cần thu thập một loạt thông tin theo một thứ tự cụ thể. Một kịch bản khác là bạn cần tự động hóa một loạt các yêu cầu theo một chuỗi cụ thể. Tôi sẽ bao gồm ba cách để làm điều này trong một chức năng đệ quy. Và vâng, tôi biết có thể có một cách hiệu quả hơn để thực hiện graphQL này nhưng điều đó có thể không giải quyết được nhiều truy vấn cho nhiều API. Đối với hướng dẫn này, chúng tôi sẽ sử dụng https://jsonplaceholder.typicode.com làm phương tiện của chúng tôi để lấy dữ liệu. Kịch bản mà chúng tôi sẽ thử và giải quyết là thực hiện 3 yêu cầu và truy xuất TODO ____10, // Success handling // Failure handling xhr.send(); // Success handling // Failure handling xhr.send(); Điều này chủ yếu cho các mục đích minh họa, nhưng trong một kịch bản thực tế hơn, chúng tôi có thể tìm nạp dữ liệu từ phần phụ trợ của mình để lấy địa chỉ, sau đó gửi yêu cầu đó đến Google Map dữ liệu. Gọi lại đệ quyGọi lại là cách ban đầu để thực hiện tuần tự các yêu cầu. Đối với điều này, tôi sẽ tránh các chức năng trả lại những lời hứa như // Recursive Function3 và gắn bó với // Recursive Function4 ban đầu. Xác định yêu cầu XHR HTTP của chúng tôiconst xhr = new XMLHttpRequest();xhr.addEventListener('load', (data) => { Yêu cầu gói trong hàm đệ quy// Recursive Function Điều này sẽ hoạt động đúng? Vâng, nếu chúng ta chạy nó, đầu ra là: undefined Tại sao điều này? Đó là vì yêu cầu HTTP của chúng tôi đã hoàn thành và chúng tôi đã đưa ra kết quả trước khi mọi thứ kết thúc. Mã gọi lại đệ quy cuối cùng Mã yêu cầu HTTPSau đó, chúng ta cần thay đổi mọi thứ để làm cho nó để chúng ta vượt qua chức năng // Recursive Function5 để cho chức năng đệ quy của chúng ta biết những gì cần gọi khi nó thực hiện. // Revised Recursive Function Bây giờ khi chúng tôi chạy nó, chúng tôi sẽ nhận được đầu ra sau: [ Hứa hẹn đệ quyVới những lời hứa đệ quy, chúng ta có thể tận dụng việc sử dụng tìm nạp. Một giới hạn cần lưu ý với Fetch là chúng tôi không thể có được tiến trình tải xuống, vì vậy nếu chúng tôi muốn tiến hành lấy dữ liệu, chúng tôi sẽ không thể thực hiện và trong kịch bản đó, tôi sẽ chỉ sử dụng // Recursive Function6 và bọc nó trong một // Recursive Function7 . Xác định yêu cầu HTTP tìm nạp của chúng tôiconst config = { Mã yêu cầu HTTP hứa hẹn cuối cùng// Promise Recursive Function Async đang chờ đệ quyĐiều cần nhớ với // Recursive Function8 là nó vẫn mong đợi một // Recursive Function9 và may mắn là // Recursive Function3 đã là một lời hứa. Điều chính cần nhớ là undefined 1 về cơ bản đang biến một hàm chính quy thành // Recursive Function9. Basically: const myPromise = () => new Promise.resolve('hello');// = the same as const myAsync = async () => 'hello'; Xác định yêu cầu HTTP Async đang chờ đợi của chúng tôiChúng tôi kết thúc yêu cầu // Recursive Function3 của chúng tôi trong một undefined 4 và undefined 5 hoạt động giống như // Recursive Function9 undefined 5 và chúng tôi // Recursive Function8 // Recursive Function3 bởi vì nó đã là một lời hứa và khi chúng tôi nhận được phản hồi, chúng tôi chuyển đổi chức năng không hứa hẹn của mình thành một lời hứa với // Revised Recursive Function 0.________số 8Bạn cũng sẽ nhận thấy có thêm // Recursive Function8 trên // Revised Recursive Function 2 đó là do // Revised Recursive Function 3 = // Revised Recursive Function 2 cũng là một lời hứa.Async đệ quy cuối cùng đang chờ mã yêu cầu HTTP// Async Await Recursive Function Đi đâu từ đâyMột trong những điều chính truyền cảm hứng cho bài đăng này là tôi không thể hứa hẹn với một số bài kiểm tra sau của người đưa thư của mình, vì vậy tôi phải tạo chức năng gọi lại HTTP đệ quy thực hiện nhiều yêu cầu.Postman tests, so I had to create a recursive http callback function that performed multiple requests. Nếu bạn có quyền kiểm soát API, thì tôi sẽ giới thiệu trong hầu hết các trường hợp dữ liệu API cung cấp mọi thứ bạn cần, nhưng trong một số trường hợp, bạn có thể làm điều đó và bạn sẽ cần thực hiện các yêu cầu cho nhiều API cho tất cả dữ liệu cần thiết của bạn. Nếu bạn có giá trị từ điều này và/hoặc nếu bạn nghĩ rằng điều này có thể được cải thiện, xin vui lòng cho tôi biết trong các ý kiến. Vui lòng chia sẻ nó trên Twitter 🐦 hoặc các nền tảng truyền thông xã hội khác. Cảm ơn một lần nữa vì đã đọc. 🙏 Theo dõi tôi trên Twitter: @codingwithmanny và Instagram tại @CodingWithManny.twitter: @codingwithmanny and instagram at @codingwithmanny. |