- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
Đâ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.
có thể được
: one with sau đó
Đối tượng hoặc chức năng của phương pháp.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.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.ngoại lệ
:vượt qua ném
Giá trị được đưa ra bởi lệnh.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ị.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:
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.
sau đó
phương phápMộ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)
onFulfilled và onRejected là các tùy chọn tham số:
onĐã hoàn thành
is not a function, it must be drop.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.
If onFulfill là một hàm:
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.hứa
Không thể gọi khi được thực hiện.If onRejected là một hàm:
hứa
Được gọi sau khi bị từ chối hứa
lý do là tham số đầu tiên.hứa
Không thể gọi đến khi bị từ chối.[3.1].
onFulfilled và onRejected phải được gọi dưới dạng hàm (không có giá trị này [3.2].
thì có thể được gọi nhiều lần cùng một lời hứa.
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ự.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ự.thì phải trả lời một lời hứa [3.3].
Promise2 = Promise1.then(onFulfilled, onRejected);
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].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.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.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ự.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:
hứa
Và x
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.x
là một hứa, thì trạng thái [3.4] của nó sẽ được thông qua:
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.x
được phát triển khai, sử dụng cùng một giá trị phát triển khai hứa
.x
Bị từ chối, sử dụng cùng một lý do để từ chối hứa
.x
là một đối tượng hoặc chức năng:
sau đó
set to x.thì
.[3.5]x.thì
Ném một ngoại lệ e
, sau đó sử dụng e
từ chối như làm hứa
.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:
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)
.từ chốiPromise
được gọi và được chuyển vào r
, sau đó sử dụng r
từ chối hứa
.giảiLời hứa
Và từ chốiPromise
hoặ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.sau đó
Ném một ngoại lệ e
,
giảiLời hứa
hoặc từ chốiPromise
đã được gọi, ngoại lệ sẽ bị bỏ qua.e
từ chối như làm hứa
.sau đó
không phải là một chức năng, hãy sử dụng x
nhận ra hứa
.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].
"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ý.
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.
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.
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.
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.
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! .
Làm thế nào để thoát khỏi một lời hứa từ một lời hứa? Tài liệu Perl6 không cung cấp một cách dễ dàng. Ví dụ: my $x = start { loop { # loop mãi mãi cho đến khi "qui
Tôi có một hành động lập chỉ mục trong UserController của mình, trong đó tôi đang cố gắng thực hiện hai việc liên tiếp và phương thức res.json() được yêu cầu không được thực thi cho đến khi cả hai đều có cơ hội hoàn thành. Tôi có một mô hình tham gia tình bạn tham gia cùng người dùng. Một cột là bạn bè
Vui lòng giúp tôi giải thích tại sao có hai kết quả nhật ký khác nhau: Phương pháp 1: Ghi tuần tự sau mỗi 1 giây. Phương pháp 2: Ghi lại tất cả các phần tử sau 1 giây. // Cách 1 let dãy = Promise.resolve();
Câu hỏi của tôi rất đơn giản. Phương thức Promise.all() có thể trả về Promise không? Hãy để tôi giải thích: function simpleFunction() { let queue = [];
Tôi đang sử dụng Promise để đọc tệp từ bộ lưu trữ và chuyển đổi thành chuỗi base64. Tôi có mảng hình ảnh, sử dụng RNFS để đọc hình ảnh const Promise_Images = _Images.map(async (
Nếu Promise.all hoặc Promise.race được gọi với một mảng không trống, chúng sẽ trả về một Promise đang chờ xử lý: console.log(Promise.all([1])); // in
Promise.all có thể trả về giá trị cuối cùng của chuỗi mà không thực hiện lời hứa không? Không sử dụng chờ đợi, nó không hoạt động trong ngữ cảnh của tôi Ví dụ không có gói: function sum1(x){ r
Tôi đang loay hoay với những lời hứa và thường có thể tìm ra cách xử lý chúng tốt, nhưng trong trường hợp này, tôi không biết cách loại bỏ mức độ gói lời hứa. Mã như sau: let Promise2 = Promise1.
Hãy xem xét cấu trúc Promise lồng nhau sau đây: const getData = async() => { const refs = [{ name: "John33", age: 3
Tôi đã đọc thông số Promise/A+, nhưng theo những gì tôi hiểu, có những thứ như Promise/A và Promise. Sự khác biệt giữa chúng là gì? Điều này có đúng với thông số kỹ thuật Promise và Promise/A không? trong trường hợp
Khi tôi chạy đoạn mã sau: my $timer = Promise.in(2); my $after = $timer.then({ say "2 giây đã kết thúc!"; 'kết quả'
Lời hứa đơn giản sau đây đã được tuyên thệ và tôi không được phép phá vỡ nó. $my_promise của tôi = bắt đầu { vòng lặp {} # hoặc ngủ x 'lời hứa lại;
Tôi đang cố gắng mở rộng Promise: class PersistedPromise mở rộng Promise { } và sau đó gọi độ phân giải tĩnh trên lớp dẫn xuất để trực tiếp tạo Promise đã được giải quyết: Per
Tôi có hai hàm trả về lời hứa và tôi sử dụng chúng một cách độc lập là: getLocal().then(...) và getWeb().then(...) Nhưng bây giờ tôi gặp một vấn đề lạ: 1) Tôi cần thứ ba
Tôi không biết liệu giải pháp có hứa hẹn hay không.Tất cả đều có trong lời hứa.Tất cả đều là một cách thực hành tốt. Tôi không chắc. bằng tin nhắn. let user list =
Hãy xem đoạn mã sau: function taskAndMicroTasks() { const
Hãy xem đoạn mã sau: function taskAndMicroTasks() { const
Đầu năm nay, tôi đã làm việc trong một dự án hứa hẹn tại Pharo Smalltalk. Ý tưởng là để đạt được hành vi sau: ([ 30 chờ đợi. 4 ]promiseValue )sau đó:
Xin chào mọi người, cảm ơn trước sự giúp đỡ của các bạn. một số lỗi(); } function2() { // dosomething suc
f2 đã giải quyết được nên tôi sẽ không thêm mã đó, đó là f1 mà tôi đang gặp vấn đề. rồi thực thi editId
Tôi là một lập trình viên xuất sắc, rất xuất sắc!