Thắc mắc về source code của promise trong JS

Hi ạ, mình muốn hỏi 3 câu hỏi. Mình cảm ơn nhiều.

  1. Mình tìm thấy source code implement promise trong js https://developpaper.com/source-code-implementation-of-promise-perfect-in-accordance-with-promise-a-specification/ Không biết source code này có phải chính chủ ECMAscript không hay fake (web này chắc là blog copy lại)?

  2. Cho mình hỏi Promise A+ là gì vậy, trong source code promise có dẫn các điều mục trong promise A+ mà mình search trong trang https://promisesaplus.com/#notes thấy không liên quan gì hết (đoạn 2.2.4 setTimeout). Đọc một số blog cũng thấy nhiều người dẫn từ promise A+ specification.

  3. Có phải bên trong promise implement bằng cách dùng setTimeout với time = 0 đúng không? Nếu đúng vậy thì tại sao trong even loop, promise được xếp vào Microtask queue (Job queue) trong khi setTimeout thuộc Macrotask queue (Task queue)?

Không biết trả lời đúng ko nhưng mà cũng muốn nếu ý kiến :joy: có gì sai m.n bổ sung

  1. ECMAScript theo mình biết thì nó chỉ có bản mô tả kỹ thuật để dựa theo đó mà implement. Như trong link thì tác giả tự mình implement theo bản mô tả đó https://promisesaplus.com/. Ngoài implementation của browser (native implemetation) thì có bluebird hay Q, nên là ko có source code implement nào là chính chủ ECMAScript.
  2. Ngoài Promise/A ra còn còn có một số đề xuất khác nữa, Promise/B , Promise/C … Nói chung là Promise nhưng nhiều nhánh http://wiki.commonjs.org/wiki/Promises xem đoạn proposal nên Promise/A+ chắc là mở rộng thêm của Promise/A.
  3. Cái này tùy vào implementation mà promise có thể thuộc macroTask hoặc microTask, Với implement như trong link bạn đưa thì nó vô macroTask rồi.
6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?