Hôm nay chúng ta sẽ xây dựng và điều hành một cửa hàng kem và học JavaScript không đồng bộ cùng một lúc. Trên đường đi, bạn sẽ học cách sử dụng:ice cream shop and learn
asynchronous JavaScript at the same time. Along the way, you'll learn how to use: Vì vậy, chúng ta hãy đi sâu vào! JavaScript không đồng bộ đồng bộ Cách gọi lại hoạt động trong JavaScript Cách những lời hứa hoạt động trong JavaScriptcallbacks, promises or Async/await – to run those small tasks in a way that you get the best
results. Làm thế nào Async / Await hoạt động trong JavaScript Cách những lời hứa hoạt động trong JavaScript Làm thế nào Async / Await hoạt động trong JavaScript Vì vậy, chúng ta hãy đi sâu vào! Bạn cũng có thể xem hướng dẫn này trên YouTube nếu bạn thích: Nếu bạn muốn xây dựng các dự án một cách hiệu quả, thì khái niệm này là dành cho bạn.[single threaded]. Think about it like this – one
thread means one hand with which to do stuff. Sau đó, bạn có thể sử dụng bất kỳ trong ba kỹ thuật này - gọi lại, lời hứa hoặc async/chờ đợi - để chạy các nhiệm vụ nhỏ đó theo cách mà bạn có được kết quả tốt nhất. Hãy đi sâu vào! Hệ thống đồng bộ là gì? Trong một hệ thống đồng bộ, các nhiệm vụ được hoàn thành lần lượt. Hãy xem GIF 👇 - Một điều đang xảy ra tại một thời điểm ở đây: Trong hệ thống này, các nhiệm vụ được hoàn thành độc lập. Hãy xem gif 👇 - bạn có thể thấy rằng mỗi hình ảnh tải cùng một lúc. Một lần nữa, tất cả các hình ảnh đang tải theo tốc độ của riêng họ. Không ai trong số họ đang chờ đợi bất kỳ ai trong số những người khác. Khi ba hình ảnh đang ở trên một cuộc đua marathon, trong A: Hệ thống đồng bộ, ba hình ảnh nằm trong cùng một làn. Người này không thể vượt qua người kia. Cuộc đua được hoàn thành từng cái một. Nếu hình ảnh số 2 dừng, hình ảnh sau sẽ dừng. Don't worry, we'll discuss the
Hệ thống không đồng bộ, ba hình ảnh ở các làn khác nhau. Họ sẽ kết thúc cuộc đua theo tốc độ của riêng họ. Không ai dừng lại cho bất cứ ai: Ví dụ mã đồng bộ và không đồng bộ Trước khi bắt đầu dự án của chúng tôi, chúng ta hãy xem xét một số ví dụ và làm rõ mọi nghi ngờ.Ví dụ mã đồng bộ Để kiểm tra một hệ thống đồng bộ, hãy viết mã này bằng JavaScript: Đây là kết quả trong bảng điều khiển: 👇Ví dụ về mã không đồng bộ Giả sử phải mất hai giây để ăn một ít kem. Bây giờ, hãy thử nghiệm một hệ thống không đồng bộ. Viết mã dưới đây trong JavaScript. Lưu ý: Đừng lo lắng, chúng tôi sẽ thảo luận về chức năng 6 sau trong bài viết này.Và đây là kết quả trong bảng điều khiển: 👇 Bây giờ bạn đã biết sự khác biệt giữa các hoạt động đồng bộ và async, hãy xây dựng cửa hàng kem của chúng tôi.Cách thiết lập dự án của chúng tôi Đối với dự án này, bạn chỉ có thể mở Codepen.io và bắt đầu mã hóa. Hoặc, bạn có thể làm điều đó trong mã VS hoặc biên tập viên bạn chọn. Mở phần JavaScript, và sau đó mở bảng điều khiển nhà phát triển của bạn. Chúng tôi sẽ viết mã của chúng tôi và xem kết quả trong bảng điều khiển.Các cuộc gọi lại trong JavaScript là gì? Khi bạn làm tổ một hàm bên trong một hàm khác như một đối số, đó được gọi là một cuộc gọi lại. Đây là một minh họa về một cuộc gọi lại: Một ví dụ về một cuộc gọi lạiĐừng lo lắng, chúng ta sẽ thấy một số ví dụ về cuộc gọi lại trong một phút.
Hãy xem ví dụ này: 👇Biểu đồ chứa các bước để làm kem Đây là những bước nhỏ bạn cần để làm kem. Cũng lưu ý rằng trong ví dụ này, thứ tự của các bước và thời gian là rất quan trọng. Bạn không thể cắt trái cây và phục vụ kem.
Đồng thời, nếu bước trước không hoàn thành, chúng ta không thể chuyển sang bước tiếp theo. Để giải thích điều đó chi tiết hơn, hãy bắt đầu kinh doanh cửa hàng kem của chúng tôi.
Nhưng chờ đã ...orders. Once we have an order, we start production and then we serve ice cream. So, we'll create two functions ->
Đây là cách tất cả hoạt động: 👇 Nhận đơn đặt hàng từ khách hàng, tìm nạp các thành phần, bắt đầu sản xuất, sau đó phục vụ.Hãy tạo ra các chức năng của chúng tôi. Chúng tôi sẽ sử dụng các chức năng mũi tên ở đây:
Bây giờ, hãy thiết lập mối quan hệ giữa hai chức năng này bằng cách sử dụng cuộc gọi lại, như thế này: 👇
Hãy làm một bài kiểm tra nhỏChúng tôi sẽ sử dụng chức năng 9 để tiến hành các bài kiểm tra để xóa bỏ mọi nghi ngờ mà chúng tôi có thể có về cách chúng tôi thiết lập mối quan hệ giữa hai chức năng.
Để chạy thử nghiệm, chúng tôi sẽ gọi hàm 7. Và chúng tôi sẽ thêm hàm thứ hai có tên 8 làm đối số của nó. 7 function. And we'll add the second function named 8 as its
argument.
Đây là kết quả trong bảng điều khiển của chúng tôi 👇 Nghỉ ngơi một látCho đến nay rất tốt - hãy nghỉ ngơi! Xóa bảng điều khiển.logGiữ mã này và xóa mọi thứ [không xóa biến cổ phiếu của chúng tôi]. Trong chức năng đầu tiên của chúng tôi, hãy vượt qua một đối số khác để chúng tôi có thể nhận được đơn đặt hàng [Tên trái cây]:
Dưới đây là các bước của chúng tôi, và thời gian mỗi bước sẽ thực hiện để thực hiện. Biểu đồ chứa các bước để làm kemTrong biểu đồ này, bạn có thể thấy rằng bước 1 là đặt thứ tự, mất 2 giây. Sau đó, bước 2 được cắt trái cây (2 giây), bước 3 là thêm nước và đá (1 giây), bước 4 là khởi động máy (1 giây), bước 5 là chọn thùng chứa (2 giây), bước 6 là chọn toppings (3 giây) và bước 7, bước cuối cùng, là phục vụ kem mất 2 giây. Để thiết lập thời gian, hàm 6 là tuyệt vời vì nó cũng sử dụng một cuộc gọi lại bằng cách lấy một hàm làm đối số.Cú pháp của hàm setTimeout ()Bây giờ, hãy chọn trái cây của chúng tôi và sử dụng chức năng này:
Và đây là kết quả trong bảng điều khiển: 👇 Lưu ý rằng kết quả được hiển thị sau 2 giây. that the result is displayed after 2 seconds. Nếu bạn đang tự hỏi làm thế nào chúng tôi chọn dâu tây từ biến chứng khoán của chúng tôi, thì đây là mã có định dạng 👇 Đừng xóa bất cứ điều gì. Bây giờ chúng tôi sẽ bắt đầu viết chức năng sản xuất của mình với mã sau. Chúng tôi sẽ sử dụng các chức năng mũi tên: 0Và đây là kết quả 👇 Chúng tôi sẽ tổ chức năng 3 khác trong chức năng 3 hiện tại của chúng tôi để cắt trái cây. Như thế này: 👇 1Và đây là kết quả 👇 Chúng tôi sẽ tổ chức năng 3 khác trong chức năng 3 hiện tại của chúng tôi để cắt trái cây. Như thế này: 👇Biểu đồ chứa các bước để làm kemTrong biểu đồ này, bạn có thể thấy rằng bước 1 là đặt thứ tự, mất 2 giây. Sau đó, bước 2 được cắt trái cây (2 giây), bước 3 là thêm nước và đá (1 giây), bước 4 là khởi động máy (1 giây), bước 5 là chọn thùng chứa (2 giây), bước 6 là chọn toppings (3 giây) và bước 7, bước cuối cùng, là phục vụ kem mất 2 giây. 2Để thiết lập thời gian, hàm 6 là tuyệt vời vì nó cũng sử dụng một cuộc gọi lại bằng cách lấy một hàm làm đối số.Cú pháp của hàm setTimeout () Bây giờ, hãy chọn trái cây của chúng tôi và sử dụng chức năng này: Và đây là kết quả trong bảng điều khiển: 👇Lưu ý rằng kết quả được hiển thị sau 2 giây. Nếu bạn đang tự hỏi làm thế nào chúng tôi chọn dâu tây từ biến chứng khoán của chúng tôi, thì đây là mã có định dạng 👇Đừng xóa bất cứ điều gì. Bây giờ chúng tôi sẽ bắt đầu viết chức năng sản xuất của mình với mã sau. Chúng tôi sẽ sử dụng các chức năng mũi tên: Nghỉ ngơi một látCho đến nay rất tốt - hãy nghỉ ngơi! Xóa bảng điều khiển.log Giữ mã này và xóa mọi thứ [không xóa biến cổ phiếu của chúng tôi]. Trong chức năng đầu tiên của chúng tôi, hãy vượt qua một đối số khác để chúng tôi có thể nhận được đơn đặt hàng [Tên trái cây]:Dưới đây là các bước của chúng tôi, và thời gian mỗi bước sẽ thực hiện để thực hiện. Biểu đồ chứa các bước để làm kemTrong biểu đồ này, bạn có thể thấy rằng bước 1 là đặt thứ tự, mất 2 giây. Sau đó, bước 2 được cắt trái cây (2 giây), bước 3 là thêm nước và đá (1 giây), bước 4 là khởi động máy (1 giây), bước 5 là chọn thùng chứa (2 giây), bước 6 là chọn toppings (3 giây) và bước 7, bước cuối cùng, là phục vụ kem mất 2 giây.
Và đây là kết quả trong bảng điều khiển: 👇 Lưu ý rằng kết quả được hiển thị sau 2 giây.Nếu bạn đang tự hỏi làm thế nào chúng tôi chọn dâu tây từ biến chứng khoán của chúng tôi, thì đây là mã có định dạng 👇
Chúng ta hãy hoàn thành sản xuất kem của chúng ta bằng cách làm tổ một chức năng bên trong một chức năng khác - điều này còn được gọi là một cuộc gọi lại, hãy nhớ chứ? Đừng xóa bất cứ điều gì. Bây giờ chúng tôi sẽ bắt đầu viết chức năng sản xuất của mình với mã sau. Chúng tôi sẽ sử dụng các chức năng mũi tên:Và đây là kết quả 👇 Biểu đồ chứa các bước để làm kemTrong biểu đồ này, bạn có thể thấy rằng bước 1 là đặt thứ tự, mất 2 giây. Sau đó, bước 2 được cắt trái cây (2 giây), bước 3 là thêm nước và đá (1 giây), bước 4 là khởi động máy (1 giây), bước 5 là chọn thùng chứa (2 giây), bước 6 là chọn toppings (3 giây) và bước 7, bước cuối cùng, là phục vụ kem mất 2 giây. 3Để thiết lập thời gian, hàm 6 là tuyệt vời vì nó cũng sử dụng một cuộc gọi lại bằng cách lấy một hàm làm đối số. 4Cú pháp của hàm setTimeout () 5Bây giờ, hãy chọn trái cây của chúng tôi và sử dụng chức năng này:
Let's add the time and work factors inside our promise using a 6 function inside our 9 statement. Follow me 👇Đừng xóa bất cứ điều gì. Bây giờ chúng tôi sẽ bắt đầu viết chức năng sản xuất của mình với mã sau. Chúng tôi sẽ sử dụng các chức năng mũi tên: In real life, you can avoid the time factor as well. This is completely dependent on the nature of your work. 7Và đây là kết quả 👇 8Chúng tôi sẽ tổ chức năng 3 khác trong chức năng 3 hiện tại của chúng tôi để cắt trái cây. Như thế này: 👇Nếu bạn nhớ, đây là các bước của chúng tôi: Và đây là kết quả 👇Chúng tôi sẽ tổ chức năng 3 khác trong chức năng 3 hiện tại của chúng tôi để cắt trái cây. Như thế này: 👇Minh họa về chuỗi lời hứa bằng cách sử dụng. Sau đó, người xử lýNgười xử lý .Then trả lại một lời hứa khi lời hứa ban đầu của chúng tôi được giải quyết. Đây là một ví dụ:Hãy để tôi đơn giản hơn: nó tương tự như hướng dẫn cho ai đó. Bạn nói với ai đó "trước tiên làm điều này, sau đó làm điều đó, sau đó điều này, sau đó .., sau đó .., sau đó ..." và cứ thế.
Hãy thực hiện điều này trong dự án của chúng tôi. Ở dưới cùng của mã của bạn viết các dòng sau. 👇 Lưu ý: Đừng quên viết từ 1 word inside your 0 handler. Otherwise, it won't work properly. If you're curious, try removing the return once we finish the steps: 9Và đây là kết quả: 👇 Sử dụng cùng một hệ thống, hãy kết thúc dự án của chúng tôi: 👇 0Đây là kết quả: 👇 Xử lý lỗiChúng tôi cần một cách để xử lý các lỗi khi có sự cố xảy ra. Nhưng trước tiên, chúng ta cần hiểu chu kỳ hứa hẹn: Một minh họa về cuộc đời của một lời hứaĐể bắt lỗi của chúng tôi, hãy thay đổi biến của chúng tôi thành Sai. 1Có nghĩa là cửa hàng của chúng tôi đã đóng cửa. Chúng tôi không bán kem cho khách hàng của mình nữa. Để xử lý việc này, chúng tôi sử dụng trình xử lý 3. Giống như 0, nó cũng trả lại một lời hứa, nhưng chỉ khi lời hứa ban đầu của chúng tôi bị từ chối.Một lời nhắc nhở nhỏ ở đây:
Đi xuống phía dưới và viết mã sau: 👇 Chỉ cần nhớ rằng không có gì giữa trình xử lý 0 trước đây của bạn và trình xử lý 3. 2Đây là kết quả: 👇 Một vài điều cần lưu ý về mã này:
Cách sử dụng trình xử lý .finally ()Có một thứ gọi là trình xử lý 1 hoạt động bất kể lời hứa của chúng tôi đã được giải quyết hay bị từ chối.Ví dụ: cho dù chúng tôi không phục vụ khách hàng hay 100 khách hàng, cửa hàng của chúng tôi sẽ đóng cửa vào cuối ngày whether we serve no customers or 100 customers, our shop will close at the end of the day Nếu bạn tò mò kiểm tra điều này, hãy đến ở rất dưới cùng và viết mã này: 👇 3Kết quả: 👇 Mọi người, xin vui lòng chào mừng Async / Await ~ Làm thế nào để Async / đang chờ hoạt động trong JavaScript?Đây được cho là cách tốt hơn để viết lời hứa và nó giúp chúng tôi giữ cho mã của chúng tôi đơn giản và sạch sẽ. Tất cả bạn phải làm là viết từ 2 trước bất kỳ chức năng chính quy nào và nó trở thành một lời hứa.Nhưng trước tiên, hãy nghỉ ngơiHãy xem: 👇 Trước khi async/chờ đợi, để thực hiện một lời hứa, chúng tôi đã viết điều này: 4Bây giờ sử dụng async/chờ đợi, chúng tôi viết một cái như thế này: 5Nhưng chờ đã ......Bạn cần phải hiểu ->
Cách sử dụng thử và bắt từ khóaChúng tôi sử dụng từ khóa 3 để chạy mã của chúng tôi trong khi chúng tôi sử dụng 4 để bắt lỗi. Đó là khái niệm tương tự chúng tôi đã thấy khi chúng tôi xem xét những lời hứa.Hãy xem một so sánh. Chúng ta sẽ thấy một bản demo nhỏ của định dạng, sau đó chúng ta sẽ bắt đầu mã hóa. Những lời hứa trong JS -> Giải quyết hoặc từ chốiChúng tôi đã sử dụng giải quyết và từ chối trong những lời hứa như thế này: 6Async / chờ đợi trong js -> thử, bắtKhi chúng tôi đang sử dụng Async/Await, chúng tôi sử dụng định dạng này: 7Đừng hoảng sợ, chúng tôi sẽ thảo luận về từ khóa 7 tiếp theo.Bây giờ hy vọng bạn hiểu sự khác biệt giữa lời hứa và async / chờ đợi. Cách sử dụng từ khóa đang chờ của JavaScriptTừ khóa 7 làm cho JavaScript đợi cho đến khi một lời hứa giải quyết và trả về kết quả của nó.Cách sử dụng từ khóa đang chờ đợi trong JavaScriptHãy trở lại cửa hàng kem của chúng tôi. Chúng tôi không biết nên đứng đầu khách hàng có thể thích, sô cô la hoặc đậu phộng. Vì vậy, chúng tôi cần dừng máy của chúng tôi và đi và hỏi khách hàng của chúng tôi những gì họ muốn trên kem của họ. Lưu ý ở đây rằng chỉ có nhà bếp của chúng tôi bị dừng lại, nhưng nhân viên của chúng tôi bên ngoài nhà bếp vẫn sẽ làm những việc như:
Một ví dụ về mã từ khóa đang chờ đợiChúng ta hãy tạo ra một lời hứa nhỏ để hỏi sử dụng topping nào. Quá trình này mất ba giây. 8Bây giờ, hãy tạo chức năng nhà bếp của chúng tôi với từ khóa Async trước. 9Hãy thêm các tác vụ khác bên dưới cuộc gọi 9. 0Và đây là kết quả: Chúng tôi thực sự đang đi ra ngoài nhà bếp của chúng tôi để hỏi khách hàng của chúng tôi, "Lựa chọn topping của bạn là gì?" Trong thời gian đó, những thứ khác vẫn được thực hiện. Một lần, chúng tôi có được sự lựa chọn topping của họ, chúng tôi vào bếp và hoàn thành công việc. Ghi chú nhỏKhi sử dụng async/ chờ đợi, bạn cũng có thể sử dụng 0, 3 và 5 & NBSP; cũng là một phần cốt lõi của những lời hứa.Hãy mở cửa hàng kem của chúng tôi một lần nữaChúng ta sẽ tạo hai chức năng ->
Hãy bắt đầu! Đầu tiên, tạo hàm thời gian: 1Bây giờ, hãy tạo ra nhà bếp của chúng tôi: 2Hãy đưa ra hướng dẫn nhỏ và kiểm tra nếu chức năng nhà bếp của chúng tôi có hoạt động hay không: 3Kết quả trông như thế này khi cửa hàng mở cửa: 👇 Kết quả trông như thế này khi cửa hàng đóng cửa: 👇 Càng xa càng tốt. Hãy hoàn thành dự án của chúng tôi. Đây là danh sách các nhiệm vụ của chúng tôi một lần nữa: 👇 Biểu đồ chứa các bước để làm kemĐầu tiên, mở cửa hàng của chúng tôi 3Bây giờ hãy viết các bước bên trong hàm 9 của chúng tôi: 👇 5Và đây là kết quả: 👇 Sự kết luậnXin chúc mừng đã đọc cho đến khi kết thúc! Trong bài viết này bạn đã học:
Đây là huy chương của bạn để đọc cho đến khi kết thúc. ❤ Đề xuất và phê bình được đánh giá cao ❤YouTube / Joy Shaheb LinkedIn / Joyshaheb Twitter / Joyshaheb Instagram / Joyshaheb Tín dụng
Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu |