🤝 JavaScript Promises Master Quiz
Test your knowledge of JavaScript Promises with this interactive quiz!
graph LR
States["fa:fa-circle-notch Promise States"]
Methods["fa:fa-tools Promise Methods"]
Handling["fa:fa-hand-holding Error Handling"]
Static["fa:fa-cubes Static Methods"]
%% Promise States Branch
States -->|"initial state"| S1["fa:fa-hourglass-start Pending"]
States -->|"operation completed"| S2["fa:fa-check-circle Fulfilled"]
States -->|"operation failed"| S3["fa:fa-times-circle Rejected"]
S1 -->|"transforms to"| S1A["fa:fa-arrow-right Settled State"]
S2 -->|"handled by"| S2A["fa:fa-then .then()"]
S3 -->|"handled by"| S3A["fa:fa-bug .catch()"]
%% Promise Methods Branch
Methods -->|"success handler"| M1["fa:fa-check .then()"]
Methods -->|"error handler"| M2["fa:fa-exclamation .catch()"]
Methods -->|"cleanup"| M3["fa:fa-broom .finally()"]
M1 -->|"chainable"| M1A["fa:fa-chain Promise Chaining"]
M2 -->|"catches any error"| M2A["fa:fa-shield-alt Error Recovery"]
M3 -->|"always executes"| M3A["fa:fa-clock Cleanup Tasks"]
%% Error Handling Branch
Handling -->|"unhandled rejection"| H1["fa:fa-exclamation-triangle UnhandledPromiseRejection"]
Handling -->|"error propagation"| H2["fa:fa-arrow-down Chain Propagation"]
H1 -->|"requires"| H1A["fa:fa-life-ring Error Handler"]
H2 -->|"catches at"| H2A["fa:fa-arrow-right Nearest .catch()"]
%% Static Methods Branch
Static -->|"wait for all"| ST1["fa:fa-layer-group Promise.all()"]
Static -->|"first to settle"| ST2["fa:fa-flag-checkered Promise.race()"]
Static -->|"first to fulfill"| ST3["fa:fa-trophy Promise.any()"]
Static -->|"all settled"| ST4["fa:fa-tasks Promise.allSettled()"]
ST1 -->|"fails if any fails"| ST1A["fa:fa-list Array of Results"]
ST2 -->|"returns first"| ST2A["fa:fa-fast-forward First Response"]
ST3 -->|"needs one success"| ST3A["fa:fa-check-double First Success"]
ST4 -->|"complete status"| ST4A["fa:fa-clipboard-list All Results"]