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

茶文化网站网页设计江苏 网站建设

茶文化网站网页设计,江苏 网站建设,网站开发的主要技术,系统网站设计这是因为 forEach 方法不会等待 async/await 异步操作的完成。forEach 方法是一种同步的方法#xff0c;它会在每个迭代内部同步执行一个回调函数。当遇到 await 时#xff0c;会立即暂停执行#xff0c;但是 forEach 方法不会等待回调函数中的 await 异步操作完成#xff…这是因为 forEach 方法不会等待 async/await 异步操作的完成。forEach 方法是一种同步的方法它会在每个迭代内部同步执行一个回调函数。当遇到 await 时会立即暂停执行但是 forEach 方法不会等待回调函数中的 await 异步操作完成而是立即执行下一个循环。 举个例子假如在 React Hook 组件中我们想要通过遍历异步请求一个数组中的数据 import React, { useState, useEffect } from react;function MyComponent() {const [data, setData] useState([]);useEffect(() {const fetchData async () {const result [];[1, 2, 3].forEach(async (num) {const response await fetch(https://jsonplaceholder.typicode.com/todos/${num});const data await response.json();result.push(data);})setData(result);}fetchData();}, []);return (ul{data.map(item li key{item.id}{item.title}/li)}/ul); };export default MyComponent;在这个例子中使用 forEach 方法来遍历并异步请求数据然后将请求到的数据添加到 result 数组中。最后将 result 数组通过 setData 设置为 data 的状态。然而这个代码并不能达到我们的预期。 原因是 forEach 方法是同步执行的在执行的过程中会立即调用回调函数。在回调函数中使用 async/await 将请求转为异步操作当执行到 await 时虽然会暂停当前的执行但是 forEach 会继续执行下一次循环因此 result 数组没有等待所有的异步请求完成后再被更新而是由于异步请求还没有完成因此我们只得到了一个空的数组。 解决这个问题的方法是使用 for..of 循环或者 Promise.all。在这里我提供一个使用 Promise.all 的解决方案 Promise.all的写法 import React, { useState, useEffect } from react;function MyComponent() {const [data, setData] useState([]);useEffect(() {const fetchData async () {const promises [1, 2, 3].map(async (num) {const response await fetch(https://jsonplaceholder.typicode.com/todos/${num});return response.json();});const result await Promise.all(promises);setData(result);}fetchData();}, []);return (ul{data.map(item li key{item.id}{item.title}/li)}/ul); };export default MyComponent;在这个例子中我们将 forEach 方法替换为 map用一个数组来保存返回的 Promise。然后使用 Promise.all 来并行地等待所有的 Promise 被解决并将它们的值传递给一个数组然后使用 setData() 方法来更新组件状态。这样就可以达到我们的预期异步请求完成后更新组件状态。 for…of的写法 使用 for...of 的方法和 forEach 的方法类似也是使用异步函数进行请求。但是在 for...of 循环体内部可以使用 await 等待异步操作的完成。例如 import React, { useState, useEffect } from react;function MyComponent() {const [data, setData] useState([]);useEffect(() {const fetchData async () {const result [];for (const num of [1, 2, 3]) {const response await fetch(https://jsonplaceholder.typicode.com/todos/${num});const data await response.json();result.push(data);}setData(result);}fetchData();}, []);return (ul{data.map(item li key{item.id}{item.title}/li)}/ul); };export default MyComponent;在这个例子中我们使用了 for...of 循环来遍历数组。在循环体内部使用 await 等待异步操作这样可以保证每个异步操作在上一个异步操作完成后才会被执行。 通过使用 for...of 来遍历数组可以很好地保证每个异步操作能够按顺序被执行并且可以等待每个异步操作的完成。这是相对于 forEach 来说的一种更为简洁的方式。
http://www.hkea.cn/news/14535974/

相关文章:

  • 网站建设速成软件开发工程师介绍
  • 做最精彩的绳艺网站百度知道答题赚钱
  • ps如何做ppt模板下载网站网站开发时间计划
  • 网站开发的技术难点网站建设 搜狐号
  • 郑州数码网站建设服务公司深圳网站制作联系电话
  • 成都网站建设常凡云用kid做教育网站域名
  • 网站访问pv量是指什么网站虚拟空间作用
  • 网站建设需要哪些网站开发需要哪些资料
  • 茶叶网站建设策划方案u001fwordpress 启动wordpress mu
  • 网站建设 程序开发网站备案工信部时间
  • 企业手机端网站源码下载生活服务网站开发
  • 江西建设门户网站网站开发常见技术问题
  • 建设银行怎么从网站上改手机号码买链接
  • 小学校园网站建设简介wordpress 新建模板文件夹
  • 网站建设服务ysaigo企业网站管理系统最新4湖南岚鸿牛x1 0
  • jsp网站连接数据库wordpress大学主题安装
  • 自己可以免费做网站吗不做网站做百家号
  • 做网站游戏推广赚钱吗农业网站设计
  • 织梦网站修改首页图片谷歌seo和百度seo区别
  • 网站开发工作总结论文app注册推广任务平台
  • 上海网站建设建站织梦网站站标
  • 威海营销型网站建设陕西住房城乡建设厅网站
  • 在百度上建网站做网站配置服务器
  • 上海网站推广很好上海电信网站备案
  • 动漫网站建设前期策划成都网站开发公司哪家好
  • 网站模板套餐做网站本溪
  • 成都网站推广公司小羚羊网站怎么建设
  • 中山蓝图科技网站建设芜湖做网站建设公司
  • 网站建设 招聘粤健康app下载
  • 长春企业网站设计贵州百度竞价网页设计