Lời hứa javascript là đồng bộ hay không đồng bộ?
Có nhiều cách khác nhau để xử lý các hoạt động trong NodeJS hoặc JavaScript. Đối với thực thi không đồng bộ, các quy trình khác nhau chạy đồng thời và được xử lý khi có kết quả của từng quy trình. Có nhiều cách khác nhau để xử lý mã không đồng bộ trong NodeJS hoặc trong JavaScript, đó là Show
1. lời hứa Một lời hứa trong NodeJS tương tự như một lời hứa trong cuộc sống thực. Đó là một sự đảm bảo rằng một cái gì đó sẽ được thực hiện. Promise được sử dụng để theo dõi xem sự kiện không đồng bộ đã được thực thi hay chưa và xác định điều gì sẽ xảy ra sau khi sự kiện xảy ra. Nó là một đối tượng có 3 trạng thái cụ thể là
Thí dụ. Trong khi yêu cầu dữ liệu từ máy chủ cơ sở dữ liệu, Lời hứa ở trạng thái chờ xử lý cho đến khi nhận được dữ liệu. Nếu dữ liệu được nhận thành công thì Promise ở trạng thái được giải quyết và nếu dữ liệu không thể nhận thành công thì Promise ở trạng thái bị từ chối. Xử lý lỗi của lời hứa. Đối với một lời hứa được giải quyết thành công, chúng tôi sử dụng. then() và đối với lời hứa bị từ chối, chúng tôi sử dụng. phương pháp bắt (). Để chạy mã sau khi lời hứa đã được xử lý bằng cách sử dụng. thì() hoặc. phương thức catch(), chúng ta có thể. phương thức cuối cùng(). Mã bên trong. phương thức cuối cùng () chạy một lần bất kể trạng thái của lời hứa Thí dụ JavascriptStrings are same0_______11 Strings are same2 Strings are same3 Strings are same4 Strings are same5 Strings are same6 Strings are same0 Strings are same1 Strings are same2 Strings are same6 Strings are same4____01 Strings are same2 Strings are same6 Strings are same8 Strings are same9
Strings are same6 3______94 5
Strings are same6 3Strings are same0 Strings are same01
Strings are same0____103 Strings are same6 Strings are same05 Strings are same4 Strings are same07
Strings are same09____110 Strings are same11 Strings are same6 Strings are same13 Strings are same6 Strings are same15 Strings are same16 Strings are same17 Strings are same4 Strings are same07
Strings are same09____122 Strings are same11 Strings are same6 Strings are same01 Strings are same26 đầu ra ________số 82. Không đồng bộ/Đang chờ Async/Await được sử dụng để làm việc với các lời hứa trong các chức năng không đồng bộ. Về cơ bản nó là đường cú pháp cho lời hứa. Nó chỉ là một trình bao bọc để sắp xếp lại mã và làm cho các lời hứa dễ đọc và dễ sử dụng hơn. Nó làm cho mã không đồng bộ trông giống mã đồng bộ/thủ tục hơn, dễ hiểu hơn await chỉ có thể được sử dụng trong các chức năng không đồng bộ. Nó được sử dụng để gọi một chức năng không đồng bộ và đợi nó giải quyết hoặc từ chối. await chặn việc thực thi mã trong chức năng không đồng bộ mà nó được đặt. Xử lý lỗi trong Async/Await. Đối với một lời hứa được giải quyết thành công, chúng tôi sử dụng thử và đối với lời hứa bị từ chối, chúng tôi sử dụng bắt. Để chạy mã sau khi lời hứa đã được xử lý bằng cách sử dụng thử hoặc bắt, chúng ta có thể. phương thức cuối cùng(). Mã bên trong. phương thức cuối cùng () chạy một lần bất kể trạng thái của lời hứa Là người, chúng tôi thích cấu trúc. Chúng tôi thích các danh mục, mô tả và đặt mọi thứ chúng tôi biết vào những chiếc hộp nhỏ ngăn nắp. Đây là lý do tại sao lúc đầu tôi thấy JavaScript rất khó hiểu. Nó là một kịch bản hay một ngôn ngữ lập trình? Điều tuyệt vời (đọc. khủng khiếp) điều về JavaScript là hầu hết thời gian, nó là một chút của cả hai. JavaScript đã phát triển rất nhiều trong những năm qua nên rất khó để phân loại. Hôm nay, tôi sẽ đi sâu vào tìm hiểu xem JavaScript là đồng bộ hay không đồng bộ và quy trình làm việc bên dưới trông như thế nào JavaScript là đồng bộ spoiler. về cơ bản, JavaScript là một ngôn ngữ đơn luồng, chặn, đồng bộ. Điều đó chỉ có nghĩa là tại một thời điểm chỉ có một hoạt động có thể được tiến hành. Đó không phải là toàn bộ câu chuyện, mặc dù Ảnh của Aleks ShinelevaNếu bạn phải thực hiện một yêu cầu cơ sở dữ liệu đắt tiền thì sao? . Mã đồng bộ khiến cuộc sống của lập trình viên trở nên rất khó khăn, vì vậy cộng đồng JavaScript đã phát triển một số cách giải quyết tuyệt vời Khi bạn nghe mọi người nói rằng JavaScript là ngôn ngữ không đồng bộ, ý của họ là bạn có thể điều khiển JavaScript để hoạt động theo cách không đồng bộ. Nó không được nướng trong, nhưng nó có thể. Dưới đây là một số cách để thực hiện điều đó Gọi lại không đồng bộ Giải pháp sớm nhất và đơn giản nhất để thoát khỏi thế giới đồng bộ là sử dụng lệnh gọi lại không đồng bộ (nghĩ rằng Strings are same6) Hãy sử dụng một yêu cầu cơ sở dữ liệu làm ví dụ. các lệnh gọi lại không đồng bộ cho phép bạn gọi một hàm gọi lại gửi yêu cầu cơ sở dữ liệu (và bất kỳ lệnh gọi lại lồng nhau nào khác) đến ứng dụng của bạn, nơi ứng dụng chờ phản hồi từ cơ sở dữ liệu, giải phóng phần còn lại của mã để tiếp tục chạy Khi yêu cầu cơ sở dữ liệu hoàn tất, kết quả (và bất kỳ mã lồng nhau nào khác) được gửi đến hàng đợi và sau đó được xử lý thông qua vòng lặp sự kiện Trong sơ đồ ở đây, bạn có thể thấy điều này khác với mã đồng bộ như thế nào. Chức năng C, cùng với E, F và G đều được gửi đến trình duyệt, hàng đợi và vòng lặp sự kiện
Trong khi đây là một giải pháp tuyệt vời, nó để lại một cái gì đó được mong muốn. Vì bạn không thể dự đoán chính xác khi nào hàm C sẽ giải quyết, nên bạn phải lồng tất cả các hàm phụ thuộc vào trong đó. Điều này trở nên lộn xộn nhanh chóng và dẫn đến địa ngục gọi lại khét tiếng mà không ai muốn giải quyết. Chính môi trường này đã truyền cảm hứng cho lời hứa lời hứa Để đối phó với địa ngục gọi lại, các thư viện như Bluebird hoặc Q đã cho phép các lập trình viên dọn sạch cú pháp của họ và viết mã hoạt động không đồng bộ nhưng có vẻ đồng bộ. Điều này dẫn đến mã dễ đọc hơn và chạy nhanh hơn Ảnh của Aleks ShinelevaVới một lời hứa, thay vì gộp tất cả các phần phụ thuộc vào một khối mã và gửi toàn bộ nội dung đó tới trình duyệt, chúng tôi có thể tách chúng ra Chúng tôi có thể gửi cuộc gọi lại không đồng bộ (Chức năng C) tới trình duyệt và sử dụng Strings are same7 để giữ tất cả các phụ thuộc khác (E, F và G) sang một bên, chỉ chạy chúng khi Hàm C quay lại và chạy Điều này cho phép chúng tôi viết mã theo cách mô-đun dễ đọc hơn, trong khi vẫn đạt được những lợi ích của lập trình không đồng bộ Không đồng bộ/Đang chờ Những lời hứa thật tuyệt vời — thực tế là tuyệt vời đến mức ES6 đã đưa chúng vào ngôn ngữ như một tiêu chuẩn. Nhưng việc sử dụng các lời hứa vẫn khiến mã không đồng bộ có cảm giác hơi khó chịu, vì vậy giờ đây chúng tôi có Async/Await tuyệt đẹp và tuyệt đẹp để giúp chúng tôi giải quyết Có toàn bộ bài đăng trên blog và (tôi chắc chắn) sách viết về Async/Await, vì vậy tôi sẽ không đi sâu vào vấn đề này, nhưng đủ để nói rằng Async/Await cho phép bạn
Đây là một số bài đăng trên blog và video yêu thích của tôi trên Async/Await, nếu bạn đang muốn đọc thêm Lời hứa JavaScript có không đồng bộ không?Sử dụng lời hứa, chúng tôi có thể viết các chương trình không đồng bộ theo cách dễ quản lý hơn . Sử dụng cú pháp Async/Await, mã không đồng bộ dựa trên lời hứa có thể được viết ở định dạng đồng bộ giúp tiết kiệm rất nhiều thời gian và mã có thể mở rộng được. JavaScript thực thi mã trong một luồng duy nhất, điều này khiến mã bị chặn.
JavaScript là đồng bộ hay đồng bộ?JavaScript đồng bộ
. về cơ bản, JavaScript là một ngôn ngữ đơn luồng, chặn, đồng bộ. Điều đó chỉ có nghĩa là tại một thời điểm chỉ có một hoạt động có thể được tiến hành. Đó không phải là toàn bộ câu chuyện, mặc dù.
Lời hứa có luôn không đồng bộ không?25. 5. 4 Lời hứa luôn không đồng bộ
. 2. 4) cho phương thức then(). onFulfills hoặc onRejected không được gọi cho đến khi ngăn xếp ngữ cảnh thực thi chỉ chứa mã nền tảng.
Lời hứa có được giải quyết đồng bộ không?Ngay cả khi gọi hàm giải quyết trong trình thực thi lời hứa là đồng bộ , nó sẽ thay đổi trạng thái lời hứa ngay lập tức. |