当前位置: 首页 > news >正文

网站如何paypal支付方式谷歌seo快速排名软件首页

网站如何paypal支付方式,谷歌seo快速排名软件首页,天津百度seo推广,seo 百度网盘总结 async/await 是 JavaScript 中用于简化异步编程的语法糖。async 函数会返回一个 Promise 对象。await 会暂停 async 函数的执行,直到 Promise 被 resolve 或 reject。在底层实现中,async/await 会被编译为基于 Promise 和 生成器(Genera…

总结

  • async/await 是 JavaScript 中用于简化异步编程的语法糖。
  • async 函数会返回一个 Promise 对象。
  • await 会暂停 async 函数的执行,直到 Promiseresolvereject
  • 在底层实现中,async/await 会被编译为基于 Promise生成器(Generator) 的状态机。

基本原理

1. async 函数

  • async 函数本质上是一个返回 Promise 的函数。
  • 函数内部的返回值会被自动包装成一个 Promise.resolve(value)
async function foo() {return "hello";
}foo().then(console.log); // 输出: hello

等价于:

function foo() {return Promise.resolve("hello");
}

2. await 表达式

  • await 会暂停当前 async 函数的执行,等待 Promise 完成。
  • 本质上是将异步操作“同步化”,提高代码可读性。
async function getData() {const res = await fetch("https://api.example.com/data");const data = await res.json();return data;
}

编译过程(Babel 示例)

Babel 等工具在编译 async/await 时,会将其转换为基于 GeneratorPromise 的结构。

原始代码

async function getData() {const res = await fetch("https://api.example.com/data");const data = await res.json();return data;
}

编译后代码(简化示意)

function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};
}function getData() {return _getData.apply(this, arguments);
}function _getData() {_getData = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {var res, data;return regeneratorRuntime.wrap(function _callee$(_context) {while (1) {switch ((_context.prev = _context.next)) {case 0:_context.next = 2;return fetch("https://api.example.com/data");case 2:res = _context.sent;_context.next = 5;return res.json();case 5:data = _context.sent;return _context.abrupt("return", data);case 7:case "end":return _context.stop();}}}, _callee);}));return _getData.apply(this, arguments);
}

执行流程图示

async 函数执行↓
返回一个 Promise↓
执行函数体↓
遇到 await 表达式↓
将 await 后的表达式作为 Promise 执行↓
Promise resolve 后继续执行后续代码↓
最终返回值作为 Promise 的 resolve 值

核心概念

概念说明
async将函数变为异步函数,返回一个 Promise
await等待一个 Promise 的完成,暂停函数执行
Promiseasync/await 的底层实现机制
Generator编译时用于实现异步控制流
regeneratorRuntimeBabel 编译 async/await 所需的运行时支持

注意事项

  • await 只能在 async 函数中使用,否则会报错。
  • await 后的表达式不一定是 Promise,如果不是,会自动包装为 Promise.resolve()
  • 使用 try/catch 处理 await 抛出的错误。
async function safeFetch() {try {const res = await fetch("https://api.example.com/data");return await res.json();} catch (error) {console.error("请求失败:", error);}
}

最佳实践建议

场景建议
多个异步操作需串行✅ 使用 await 简化流程
多个异步操作可并行✅ 使用 Promise.all()
避免 await 泄露作用域❌ 不要滥用嵌套 async/await
错误处理✅ 总是配合 try/catch 使用
兼容性处理✅ 使用 Babel + @babel/preset-env 转译支持旧环境

http://www.dtcms.com/a/513832.html

相关文章:

  • 梁山网站建设费用今东外贸人才网
  • 从网站建设到网站运营开发公司经营管理存在的问题
  • 做生物卷子的网站视频工厂网站建设
  • 信用体系建设网站维运工作制度app制作教程简单易学
  • 淄博网站建设方案南京在线网站制作
  • 宁波模版建站公司昆明网站建设索王道下拉
  • 厦门做网站维护的公司0基础做网站工具
  • 个人营业执照怎么申请天津网站建设网站排名优化
  • 珠海网站建设企业seo外链工具软件
  • 俄文网站推广建设网站的意义 作用是什么
  • 【LeetCode】82. 删除排序链表中的重复元素 II
  • 网站推广由什么样的人来做如何推广网站话术
  • 做网站含备案费么软件开发工具免费
  • 网站建设模块需求深圳物流公司哪家便宜又好
  • 电子商务网站推广的主要方法有什么好的网站建设的书
  • 有哪些好的做兼职网站有哪些wordpress带会员vip主题
  • 创建一个网站所需的成本中山网站建设熊掌号
  • 建设银行的网站查询密码创意网络广告
  • 小型手机网站建设企业如乐建站之家
  • 襄阳宜城网站建设进入wordpress
  • 免费的网站怎么建做推广任务的网站
  • 东莞手机建网站上海58招聘网最新招聘
  • 外贸网站建设内容包括哪些电子商务网站策划书2000字
  • 小说网站wordpress制作一个网站难吗
  • 网站一般怎么推广html网站 怎么做seo
  • 网站后台英文一个网站一年的费用
  • 建设科技网络网站的意义和目的wordpress怎么让文章只显示摘要
  • 网站建设书店目标客户分析太原推广型网站开发
  • 免费下载建筑图集规范的网站快速将网站seo
  • 二次元网站设计绍兴网站建设网站