第六周(10.21-10.27)学习笔记 24软工陈奕君
学习收获:学习了Ajax,使用bootstrap开发了一个网页,并使用学习使用了git上传到了gitee还有github
学习笔记:
异步处理:
Promise:代表一个异步操作的最终完成(成功 fulfilled)或失败(rejected)及其结果值。它是一种封装异步状态和结果的容器。
状态:
pending:初始状态(进行中)。
fulfilled:操作成功完成。
rejected:操作失败。
创建:CONST a = new Promise(function(resolve, reject) => { /* 异步操作 */ })
pedding->初始状态:调用promise时,一开始就呈现出等待状态,遇到resolve或者reject之前,都处于这个状态,且可以改变,但如果确定了状态(fulfilled/reject),则结果将永远不变,不能再次修改
fulfilled->成功状态:在执行了resolve后,promise则会从pedding变成fulfilled,后续会进入.then 的回调函数中,在回调函数的第一个参数函数中可以获取到值
rejected->失败状态:在执行了reject后,promise状态会变成rejected,rejected函数传递的参数,可以在.then的第二个参数函数中获取的到,或者是在.catch获取到,但是如果程序上的错误,得通过.catch函数去拿到失败消息,在.then中是获取不了的
使用 .then(onFulfilled, onRejected) 方法添加处理函数(也可单独用 .catch(onRejected)处理错误 .then() 返回一个新的 Promise,支持链式调用。.finally() 无论成功失败都执行。
一般异常用.catch。拒绝状态用.then
async / await:基于 Promise 的异步编程终极解决方案
本质: async 和 await 是建立在 Promise 之上的语法糖,目的是让异步代码看起来和书写起来更像同步代码,极大提升可读性和可维护性。
async 关键字: 用于声明一个异步函数。async function myAsyncFn() {...}。调用 async 函数总是返回一个 Promise 对象。如果函数内显式返回一个值,该值会被包装成一个 resolved 的 Promise;如果函数内抛出异常,会返回一个 rejected 的 Promise。
await 关键字: 只能在 async 函数内部使用。await promiseExpression;。它会暂停 async 函数的执行,等待后面的 Promise 完成(resolve 或 reject):
如果 Promise 成功 resolve,await 返回其 resolved 的值。
如果 Promise 被 reject,await 会抛出这个异常值(可以使用 try...catch 捕获)。
核心优势:
代码结构完全同步化,告别回调嵌套和 then 链。
使用熟悉的 try...catch 进行错误处理,逻辑更清晰。
控制流(条件判断、循环)写法和同步代码完全一致。
注意: 滥用 await 可能会导致不必要的顺序执行(本该并行的请求变成串行),此时应结合 Promise.all() 等。