cuốn sách gpt4 ai đã làm

Thông số kỹ thuật Promise/A+-Phiên bản tiếng Trung

In lại Tác giả: Sahara Thời gian cập nhật: 24-12-2024 20:49:42 58 4
mua khóa gpt4 Nike

Lời hứa/A+

Đây là một tiêu chuẩn mở được thiết kế để cho phép các Lời hứa JavaScript làm các nhà phát triển khác nhau phát triển khai báo được kết thúc kết nối và sử dụng liền mạch - những người đi trước khi xây dựng để cung cấp tài liệu tham khảo cho những tài liệu đó người mới khác.

Một lời hứa đại diện cho kết quả của một hoạt động không đồng bộ. Hứa hẹn là thông tin qua phương thức của nó, phương thức này đã đăng ký hàm gọi lại được truyền vào. giá trị cuối cùng của lời hứa hoặc lý do tại sao lời hứa không thể được thỏa mãn.

Thông số kỹ thuật này chỉ định hành vi của phương thức, cung cấp nền tảng vững chắc cho tất cả việc phát triển khai lời khuyên Hứa góp tiêu chuẩn Promises/A+. được coi là rất ổn định. ngược lại với thông số kỹ thuật này để giải quyết các trường hợp khó khăn mới được phát hiện, nhưng chúng tôi sẽ chỉ tiếp tục cân nhắc các thay đổi lớn hoặc nhỏ sau khi xem xét, thảo luận và thử nghiệm các thay đổi tương thích ngược lại một cách thận trọng.

Trước đây, Promises/A+ không chỉ định các điều khoản hành vi của các chủ đề xuất hiện Promise/A trước đó mà chỉ mở rộng một số điều khoản để bao gồm các chức năng thực thi và bỏ qua những phần chưa rõ hoặc có vấn đề.

Cuối cùng, cốt lõi của đặc tả Promises/A+ không đề cập đến cách tạo, đáp ứng hoặc từ chối lời hứa, thay vào Hãy chọn tập trung vào việc cung cấp một phương thức mạnh mẽ để đảm bảo khả năng tương thích giữa các cách phát triển khai báo khác nhau. lời hứa.

1 Thuật ngữ chuyên môn

  1. có thể được: one with sau đó Đối tượng hoặc chức năng của phương pháp.
  2. hứa: one with sau đó object or function Method,sau đó Hành vi của phương pháp phù hợp với đặc điểm kỹ thuật này.
  3. giá trị: là hợp pháp JS có giá trị, bao gồm không xác định,vô giá trị,có thể được hoặc hứa Chờ đợi.
  4. ngoại lệ:vượt qua ném Giá trị được đưa ra bởi lệnh.
  5. lý do: thường dùng để diễn đạt hứa Lý do từ chối/không thể thực hiện cũng là một giá trị.

2 Thông số kỹ thuật chi tiết

2.1 Trạng thái lời hứa

Một lời hứa phải ở một trạng thái sau:

Đang chờ xử lý, đã hoàn thành, bị từ chối.

Mô tả về các trạng thái này như sau:

  1. Đang chờ xử lý: đang chờ xử lý:
    1. Có thể chuyển đổi thành hai trạng thái khác, nó đã hoàn thành hoặc bị từ chối
  2. Đã hoàn thành:
    1. Cấm thay đổi từ trạng thái này sang trạng thái khác.
    2. Phải có một giá trị không thể thay đổi (giá trị - kết quả đã thành công!!)
  3. Bị từ chối - bị từ chối:
    1. Cấm thay đổi từ trạng thái này sang trạng thái khác.
    2. Phải có một lý do bất chấp giao dịch (lý do - tại sao lại từ chối!?)

Lưu ý: Tính bất biến không có nghĩa là tính bất biến ở độ sâu (chẳng hạn như có thể ghi: sai trong bộ mô tả tính). hiện tại, sau đó là tính chất bất biến tự nhiên sẽ được thiết lập.

2.2 sau đó phương pháp

Một lời hứa phải cung cấp một phương thức sau đó cung cấp quyền truy cập vào giá trị hoặc nguyên nhân hiện tại hoặc cuối cùng cùng.

Phương thức hứa hẹn rồi chấp nhận hai tham số:

Promise.then(onFulfill, onRejected)
  1. onFulfilled và onRejected là các tùy chọn tham số:

    1. if if onĐã hoàn thành is not a function, it must be drop.
    2. if if on Bị từ chối is not a function, it must be drop.

    Bỏ qua điều đó có nghĩa là chúng tôi không làm gì với nó và sẽ không đưa ra bất kỳ lỗi nào.

  2. If onFulfill là một hàm:

    1. must at in hứa được gọi sau khi được thực hiện và kết thúc hứa giá trị làm tham số đầu tiên.
    2. hiện hữu hứa Không thể gọi khi được thực hiện.
    3. Nó không được phép gọi nhiều lần.
  3. If onRejected là một hàm:

    1. must at in hứa Được gọi sau khi bị từ chối hứa lý do là tham số đầu tiên.
    2. hiện hữu hứa Không thể gọi đến khi bị từ chối.
    3. Nó không được phép gọi nhiều lần.
  4. [3.1].

  5. onFulfilled và onRejected phải được gọi dưới dạng hàm (không có giá trị này [3.2].

  6. thì có thể được gọi nhiều lần cùng một lời hứa.

    1. khi hứa Khi thực hiện, tất cả các tương ứng onĐã hoàn thành gọi lại phải gọi cho họ sau đó được thực hiện theo trình tự.
    2. khi hứa Khi bị từ chối, tất cả đều tương ứng on Bị từ chối gọi lại phải gọi cho họ sau đó được thực hiện theo trình tự.
  7. thì phải trả lời một lời hứa [3.3].

    Promise2 = Promise1.then(onFulfilled, onRejected);
    
    1. if if onĐã hoàn thành hoặc on Bị từ chối return a value x, sau đó chạy quy trình giải quyết Promise [[Giải quyết quyết]](lời hứa2, x)[2.3].
    2. if if onĐã hoàn thành hoặc on Bị từ chối Ném một ngoại lệ e,Nhưng lời hứa2 You must be e Từ chối như một lý do.
    3. if if lời hứa1 được thực hiện và onĐã hoàn thành thì không phải là một hàm lời hứa2 You must at the together lời hứa1 Giá trị tương tự được thực hiện.
    4. if if lời hứa1 bị từ chối và on Bị từ chối thì không phải là một hàm lời hứa2 You must at the together lời hứa1 Bị từ chối vì tương tự.

2.3 Quy trình giải quyết lời hứa

Quá trình giải quyết Promise là một thao tác vật thể được chấp nhận một lời hứa và một giá trị được đưa vào biểu thị bên dưới dạng [[Resolve]](promise, x). hứa chấp nhận trạng thái của x, miễn là x xử lý ít nhất bất kỳ phần nào giống như một lời hứa. hiện lời hứa với giá trị x.

Job phương pháp phù hợp với tiêu chuẩn Promises/A+. hợp lý phương pháp.

Để phát triển khai [[Resolve]](promise, x), hãy thực hiện theo các bước sau:

  1. if if hứax chỉ vào cùng một đối tượng, sau đó sử dụng LoạiLỗi từ chối hứa như một lý do để làm.
  2. if if x là một hứa, thì trạng thái [3.4] của nó sẽ được thông qua:
    1. if if x Nó đang ở trạng thái chờ xử lý,hứa Phải chờ xử lý cho đến khi x được thực hiện hoặc bị từ chối.
    2. if if x được phát triển khai, sử dụng cùng một giá trị phát triển khai hứa.
    3. if if x Bị từ chối, sử dụng cùng một lý do để từ chối hứa.
  3. Bằng không, if x là một đối tượng hoặc chức năng:
    1. Sẽ sau đó set to x.thì.[3.5]
    2. If get attribute x.thì Ném một ngoại lệ e, sau đó sử dụng e từ chối như làm hứa.
    3. if if sau đó is a function thì x BẰNG cái này Gọi no với tham số đầu tiên giảiLời hứa, hai tham số là từ chốiPromise,TRONG:
      1. if if giảiLời hứa được gọi với một giá trị được truyền vào y, sau đó chạy [[Giải quyết]](hứa, y).
      2. if if từ chốiPromise được gọi và được chuyển vào r, sau đó sử dụng r từ chối hứa.
      3. If được gọi cùng lúc giảiLời hứatừ chốiPromisehoặc nhiều lệnh gọi được thực hiện cho cùng một tham số, lệnh gọi đầu tiên sẽ được ưu tiên và các lệnh call next sẽ bị bỏ qua.
      4. If call sau đó Ném một ngoại lệ e,
        1. if if giảiLời hứa hoặc từ chốiPromise đã được gọi, ngoại lệ sẽ bị bỏ qua.
        2. Nếu không, hãy sử dụng e từ chối như làm hứa.
    4. if if sau đó không phải là một chức năng, hãy sử dụng x nhận ra hứa.
  4. if if x không phải là một đối tượng hay một chức năng, hãy sử dụng x nhận ra hứa.

Nếu một lời hứa được giải quyết bởi một đối tượng trong chuỗi có thể hoàn thành và bản chất phản hồi của [[Resolve]](promise, thenable) khiến nó được gọi lại, thì việc làm theo thuật toán sẽ dẫn đến quy định vô hạn. Nếu [3.6].

3 quote

  1. "Mã nền tảng" ở đây đề cập đến mã triển khai công cụ, môi trường và lời hứa. Trên thực tế, yêu cầu này đảm bảo rằng onFulfilled và onRejected thực thi không đồng bộ và trong ngăn xếp cuộc gọi mới sau vòng lặp sự kiện gọi sau đó. Điều này có thể đạt được thông qua cơ chế "tác vụ vĩ mô" (chẳng hạn như setTimeout hoặc setImmediate) hoặc cơ chế "tác vụ vi mô" (chẳng hạn như MutationObserver hoặc process.nextTick). Vì việc triển khai lời hứa được coi là mã nền tảng nên bản thân nó có thể chứa hàng đợi lập lịch tác vụ hoặc "bàn đạp" để gọi trình xử lý.

  2. Nghĩa là, ở chế độ nghiêm ngặt, giá trị của this sẽ không được xác định; ở chế độ không nghiêm ngặt, giá trị này sẽ trỏ đến đối tượng chung.

  3. Việc triển khai có thể cho phép Promise2 === Promise1 nếu việc triển khai đáp ứng tất cả các yêu cầu. Mỗi lần triển khai phải ghi lại xem Promise2 === Promise1 có thể được tạo ra hay không và nó có thể được thực hiện trong những điều kiện nào.

  4. Nói chung, bạn chỉ có thể chắc chắn rằng x là một lời hứa thực sự nếu x xuất phát từ việc triển khai hiện tại. Điều khoản này cho phép sử dụng các phương pháp triển khai cụ thể để áp dụng trạng thái từ các lời hứa tuân thủ tiêu chuẩn đã biết.

  5. Quá trình này trước tiên lưu trữ một tham chiếu đến x.then, sau đó kiểm tra tham chiếu đó và cuối cùng gọi tham chiếu đó, tránh nhiều quyền truy cập vào thuộc tính x.then. Biện pháp phòng ngừa này rất quan trọng để đảm bảo tính nhất quán trong trường hợp thuộc tính truy cập, vì giá trị của thuộc tính có thể thay đổi giữa nhiều lần truy xuất.

  6. Việc triển khai không nên đặt các giới hạn tùy ý về độ sâu của chuỗi có thể sử dụng được và cho rằng đệ quy vượt quá giới hạn đó sẽ là vô hạn. Chỉ các vòng lặp thực sự mới gây ra TypeError; đệ quy vô hạn là hành vi đúng nếu gặp phải một chuỗi vô hạn các khả năng khác nhau.

Cuối cùng, bài viết về đặc tả Promise/A+-phiên bản tiếng Trung kết thúc tại đây. Nếu bạn muốn biết thêm về phiên bản tiếng Trung-đặc tả Promise/A+, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ nó. trong tương lai blog của tôi! .

58 4 0
Bài viết khuyến nghị: Giới thiệu về JVM—hệ thống con thực thi 3.JVM
Bài viết khuyến nghị: chuỗi palindrome leetcode05
Bài viết khuyến nghị: Tóm tắt lệnh Socat
Bài viết khuyến nghị: Triển khai Solidity một cách dễ dàng trên openEulerRISC-V
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress