JavaScript Promise 是现代 Web 开发的重要组成部分。它们使我们能够干净有效地处理异步操作。然而,promise 的表现往往令人惊讶,尤其是与事件循环和微任务结合使用时。本文是由两部分组成的系列文章的第 1 部分,我们将解决基于 Promise 的棘手输出问题,以提高您的 JavaScript 技能。
在本系列结束时,您将更深入地了解 Promise 如何与 JavaScript 事件循环交互。让我们深入探讨前五个棘手问题!
console.log("Start"); const promise1 = new Promise((resolve) => { console.log("Promise started"); resolve("Resolved"); }); promise1.then((result) => { console.log(result); }); console.log("End");
Start Promise started End Resolved
const promise2 = new Promise((resolve) => { resolve("Resolved 1"); }); promise2.then((result) => { console.log(result); return new Promise((resolve) => { resolve("Resolved 2"); }); }).then((result) => { console.log(result); });
Resolved 1 Resolved 2
const promise3 = Promise.resolve(); promise3 .then(() => { console.log("Then 1"); }) .then(() => { console.log("Then 2"); }) .then(() => { console.log("Then 3"); });
Then 1 Then 2 Then 3
const promise4 = new Promise((_, reject) => { reject("Error occurred"); }); promise4 .then(() => { console.log("This will not run"); }) .catch((error) => { console.log("Caught:", error); }) .then(() => { console.log("This will still run"); });
Caught: Error occurred This will still run
async function asyncFunc() { console.log("Async function started"); return "Async result"; } asyncFunc().then((result) => { console.log(result); }); console.log("Synchronous log");
Async function started Synchronous log Async result
在第一部分中,我们介绍了 JavaScript Promise 的基础知识,并探讨了 Promise 解析、链接和拒绝处理的工作原理。了解事件循环和微任务队列对于掌握 Promise 至关重要,这些问题强调了这一点。请继续关注第 2 部分,我们将深入探讨更高级的 Promise 行为,包括 Promise.race、Promise.all 等等!
要点:
请继续关注本系列的第 2 部分,我们将在其中解决更高级的 Promise 技巧!
以上是掌握 JavaScript Promise:每个开发人员都必须知道的棘手输出问题! (第 1 部分)的详细内容。更多信息请关注PHP中文网其他相关文章!