[MUSIC]
Khi chúng ta đang nói về các dịch vụ trong mô-đun trước đó, tôi đã đề cập đến
những lời hứa và sau đó tôi hứa rằng tôi sẽ trở lại hứa hẹn trong mô-đun này.
Vì vậy, ở đây chúng tôi sẽ thực hiện lời hứa của tôi với bạn.
Một tính toán đồng bộ là tất cả các nơi trên toàn thế giới web.
Và cách web hoạt động.
Nếu bạn đang đến từ thế giới lập trình tuần tự,
quấn đầu của bạn xung quanh một tính toán đồng bộ mất khá nhiều nỗ lực.
Đã có nhiều nỗ lực để làm cho tính toán không đồng bộ là không đau
nhất có thể cho những người chuyển đổi vào nó từ cuốn sách tính toán tuần tự.
Một trong những nỗ lực như vậy là làm cho tính toán không đồng bộ
dễ dàng hơn để thực hiện là hứa hẹn.
Như chúng ta nhận ra, khi chúng ta thực hiện bất kỳ yêu cầu nào
đến bất kỳ dịch vụ hoặc đến một máy chủ phụ trợ,
nó sẽ mất một thời gian để kết quả có sẵn cho chúng tôi.
Nếu chúng ta làm một yêu cầu như vậy trong khi chúng ta đang tiến hành công việc của chúng tôi,
thì có khả năng cao tính toán của chúng tôi sẽ bị mắc kẹt tại điểm này,
chờ kết quả.
Đây là một không có trong điều kiện làm một trải nghiệm người dùng tốt.
Vì vậy, điều quan trọng là bất cứ khi nào kết quả của bạn sẽ mất thời gian,
bạn sẽ có thể tiến hành tiếp mà không cần chờ đợi các quy tắc.
Và đó là nơi tính toán không đồng bộ đến lợi thế của bạn.
Trong tính toán không đồng bộ khi bạn gửi yêu cầu,
bạn đang mong đợi kết quả sẽ trở lại vào một thời điểm sau đó, và
bạn sẽ có thể đối phó với thực tế, kết quả cơ bản sẽ trở lại tại một thời điểm
muộn hơn nhiều so với nơi bạn đã ở tại thời điểm khi bạn thực hiện yêu cầu.
Lời hứa cung cấp cho chúng ta một cách để đối phó với điều này.
Hãy xem xét những lời hứa chi tiết hơn một chút trong bài giảng này.
Và sau đó chúng ta cũng sẽ thấy việc sử dụng các lời hứa
trong ứng dụng Angular của chúng tôi một chút sau đó.
Hứa hẹn, khái niệm chung là một khu vực rất rộng lớn của chính nó.
Và trong khóa học này, tôi không có thời gian để đi qua các chi tiết của lời hứa.
Điều đó sẽ trở thành một khóa học trong chính nó.
Tôi sẽ cung cấp cho bạn những yếu tố cần thiết của những lời hứa cần thiết cho
chúng ta để hiểu làm thế nào để sử dụng những lời hứa trong ứng dụng góc cạnh của chúng ta.
Tôi cung cấp cho bạn rất nhiều dẫn đến các
nguồn lực bổ sung, nơi bạn có thể đi và kiểm tra các lời hứa chi tiết hơn.
Vì vậy, đi đến câu hỏi đó, chính xác lời hứa là gì?
Một lời hứa là một cơ chế hỗ trợ tính toán không đồng bộ.
Tôi chỉ đưa ra một lời giải thích dài về lý do tại sao tính toán không đồng bộ
là điều cần thiết cho web để hoạt động.
Bây giờ, trong việc sử dụng một lời hứa, lời hứa cung cấp
một cơ chế hoặc một proxy cho một giá trị mà không có sẵn tại thời điểm mà bạn yêu cầu nó.
Vì vậy, một lời hứa sẽ trả lại một lời hứa cho bạn, nói rằng
khi kết quả trở nên có sẵn, nó sẽ trở lại và cung cấp kết quả cho bạn.
Vì vậy, một lời hứa trả về một đối tượng proxy cho bạn, và bạn giữ cho đối tượng proxy.
Và đối tượng proxy đó sẽ cho bạn quyền truy cập vào kết quả khi chúng có sẵn.
Và có một phương pháp trong cách bạn chờ kết quả.
Bạn thực sự không đình chỉ tính toán của bạn tại thời điểm đó thay vào đó bạn
cấu hình một cách chấp nhận kết quả khi nó trở lại từ lời hứa đó.
Nói tóm lại,
promise đại diện cho một giá trị sẽ có sẵn tại một thời điểm tương lai.
Nó có thể cũng có sẵn ngay lập tức,
trong trường hợp đó lời hứa sẽ trả lại giá trị ngay lập tức.
Nhưng trong trường hợp nó cần phải trả về một giá trị tại một ngày trong tương lai, sau đó nó cung cấp cho bạn
lời hứa rằng giá trị đó khi nó trở nên có sẵn sẽ được trả lại cho bạn.
Luôn luôn có khả năng rằng lời hứa không thể được đáp ứng,
bởi vì kết quả không có sẵn vì bất cứ lý do gì.
Trong trường hợp đó, một lỗi sẽ được gửi cho bạn, hoặc một từ chối sẽ được gửi
cho bạn, và nó là tùy thuộc vào bạn để đối phó với thực tế là lời hứa đã bị từ chối.
Chúng ta nhìn vào cách chúng ta đối phó với điều đó trong slide tiếp theo.
Như chúng ta đã biết trước đó, một lời hứa là một ủy quyền cho một
điều gì đó sẽ xảy ra trong tương lai hoặc có thể không bao giờ xảy ra trong tương lai.
Vì vậy, một lời hứa khi nó được trao cho bạn, sẽ ở trong trạng thái chờ xử lý.
Bây giờ khi lời hứa giải quyết, đó là kết quả trở nên có sẵn và
lời hứa có thể cung cấp kết quả cho bạn, sau đó lời hứa sẽ giải quyết hoặc
sẽ hoàn thành.
Và trong trường hợp đó lời hứa sẽ chuyển từ trạng thái đang chờ xử lý sang trạng thái giải quyết hoặc
trạng thái hoàn thành.
Vì vậy, tại thời điểm đó kết quả của bạn có sẵn cho bạn.
Có một cơ hội nhỏ rằng lời hứa có thể bị từ chối vì một lỗi,
hoặc bất cứ điều gì là lý do.
Trong tình huống xa xôi đó,
bạn sẽ được chuyển một từ chối và trong trường hợp đó, lời hứa sẽ được
coi là ở trạng thái bị từ chối khi người từ chối được chuyển giao.
Vì vậy, khi bạn tạo ra một lời hứa, như tôi đã nói,
một lời hứa là một đối tượng proxy được giao cho bạn.
Vì vậy, khi bạn cung cấp một lời hứa cho ai đó, lời hứa trong nội bộ sẽ có
một chức năng mà sẽ đối phó với cả quyết tâm và
các lựa chọn từ chối bên trong đó.
Khi bạn viết mã,
bạn sẽ thấy rằng bạn sẽ viết mã như mới Promise (hàm (giải quyết, từ chối).
Cho dù nó giải quyết hay bị từ chối, chúng ta cần phải có khả năng gửi
lại thông tin cho bất cứ ai mà chúng ta đã gửi lời hứa đến.
Làm thế nào để chúng ta làm điều này trong mã?
Chúng ta hãy nhìn vào điều đó trong slide tiếp theo.
Dưới đây là một ví dụ về cách hứa hẹn được cấu hình trong mã.
Thật vậy, ví dụ này có nguồn gốc từ bài tập mà bạn sẽ làm
một chút sau đó.
Vì vậy, ở đây, khi chúng tôi cấu hình dịch vụ của chúng tôi, chúng tôi có thể có dịch vụ của chúng tôi
trả lại lời hứa cho một thành phần yêu cầu dữ liệu từ dịch vụ.
Vì vậy, khi lời hứa được trả lại,
sau đó lời hứa trở lại có sẵn cho bạn như một đối tượng.
Và lời hứa này cung cấp hai phương pháp, sau đó và phương pháp bắt.
Bây giờ, sau đó, lời hứa đã được giải quyết thành công.
Sau đó lời hứa sẽ dẫn đến
việc gọi một quyết tâm.
Như bạn đã thấy, lời hứa được xây dựng, và bên trong lời hứa,
bạn có chức năng, quyết tâm, và từ chối, như hai tham số.
Vì vậy, nếu lời hứa là thành công có thể cung cấp kết quả,
sau đó nó sẽ gọi phương pháp giải quyết và sau đó trả lại kết quả cho bạn.
Kết quả có được thực tế ở đâu?
Khi bạn viết mã chờ đợi
lời hứa sau đó bạn sẽ chỉ định phải làm gì khi lời hứa trả về kết quả
trong tùy chọn sau đó cho lời hứa đó.
Vì vậy, nói ví dụ, bạn sẽ nói getdishes.Then và bên trong sau đó
bạn sẽ cung cấp các chức năng mà sẽ đối phó với kết quả khi nó đi vào.
Nếu lời hứa không thể giải quyết một cách chính xác thì nó sẽ từ chối
với lỗi được gửi lại cho bạn.
Lỗi là một đối tượng lỗi sẽ được gửi lại cho bạn.
Vì vậy, khi lời hứa của họ bị từ chối, sau đó bạn đối phó với
sự từ chối bằng cách sử dụng một nắm bắt trong mã của bạn.
Vì vậy, trong bắt, bạn sẽ cung cấp một chức năng mà sẽ đối phó với các lỗi.
Ví dụ, bạn chỉ có thể xuất thông báo lỗi,
đăng nhập giao diện điều khiển và đối phó với lỗi theo cách đó.
Hoặc bạn có thể có một cách phức tạp hơn để xử lý lỗi.
Điều đó sẽ được cung cấp trong tùy chọn bắt mà bạn cung cấp cho mã hứa hẹn đó
về phía bạn khi lời hứa cung cấp một từ chối cho bạn.
Vì vậy, đây là cách hai mặt của đồng xu đối phó với lời hứa.
Từ một bên, bạn sẽ được gửi một đối tượng lời hứa, và
khi bạn nhận được đối tượng lời hứa, với đối tượng lời hứa, bạn sẽ hoặc làm
sau đó và bắt, vì vậy bạn phải thực hiện cả hai sau đó và
bắt số liệu bắt thay đổi đối tượng lời hứa đó.
Và sau đó, từ lời hứa đó sang một bên, nếu lời hứa kết quả chính xác,
thì quyết tâm sẽ được gọi và do đó, kết quả sẽ được chuyển giao
theo phương pháp sau đó của lời hứa của bạn.
Nếu lời hứa bị từ chối,
cuộc gọi từ chối sẽ cung cấp lỗi vào bắt của bạn.
Vì vậy, đây là cách bạn sẽ thực hiện mã bằng cách sử dụng lời hứa.
Chúng tôi sẽ giải quyết ví dụ trong bài tập sau bài giảng này.
Bây giờ rõ ràng câu hỏi tôi đặt ra là tại sao những lời hứa?
Sau đó, khi chúng ta đối phó với Node JS,
chúng ta sẽ đối phó với cách chúng ta có thể xây dựng callbacks.
Và tôi sẽ giải thích các chi tiết của callbacks và cách để đối phó với
callbacks khi chúng tôi bao gồm Node JS trong khóa học cuối cùng của chuyên môn hóa này.
Callbacks có một vấn đề của việc tạo ra những gì được gọi là callback hell.
Vì vậy, bạn có rất nhiều lồng nhau mã callback
đó là rất phức tạp để có thể tìm ra những gì nó đang cố gắng để làm.
Lời hứa cung cấp một cách giải quyết vấn đề địa ngục gọi lại này.
Nhưng cho thời điểm chúng ta đang tập trung vào Angular, tôi sẽ chỉ đề cập đến điểm này.
Và sau đó chúng tôi sẽ quay lại để giải quyết câu hỏi này trong khóa học cuối cùng.
Ưu điểm khác của việc sử dụng lời hứa là những lời hứa có thể được thay đổi.
Một lời hứa khi nó cung cấp kết quả trong thùng,
bạn có thể tạo ra một lời hứa và trở lại, và
lời hứa đó có thể được xử lý bằng cách chuỗi khác sau đó phương pháp đó và vân vân.
Vì vậy, bạn có thể chuỗi một tập hợp các phương pháp sau đó với nhau để đối phó với
những lời hứa đằng sau khác.
Nếu kết quả là ngay lập tức có sẵn hoặc nếu bạn sẽ từ chối ngay lập tức,
sau đó hứa cung cấp một phương pháp ngay lập tức trở lại mà không cần chờ đợi
lời hứa để giải quyết hoặc từ chối.
Trong trường hợp đó, bạn sẽ chỉ đơn giản là nói lời hứa với một p.resolve vốn và
promise.Refute và sau đó trả về kết quả hoặc lỗi ngay lập tức.
Trong bài tập đầu tiên, chúng tôi sẽ giải quyết phương pháp trả lại giá trị
từ dịch vụ của chúng tôi cho các thành phần của chúng tôi.
Trong phần thứ hai của bài tập, chúng tôi sẽ
giải quyết tình huống mà lời hứa sẽ giải quyết sau một thời gian.
Và cũng trong thành phần của chúng tôi, chúng ta sẽ có thể đối phó với thực tế là
kết quả sẽ trở lại một chút sau khi bạn yêu cầu kết quả.
Với sự hiểu biết nhanh chóng này về những lời hứa, chúng
ta hãy tiếp tục bài tập tiếp theo, nơi chúng ta sẽ đối phó với những lời hứa.
[ NHẠC]