Promise,await的使用

本文探讨了如何正确使用Promise进行异步操作,特别是在控制循环中并发请求的顺序和回调.then的执行逻辑。作者通过实例说明了Promise外壳和resolve/reject的作用,并揭示了请求拦截器在顺序控制中的应用。

上面是控制台输出的信息,前者是输出的Promise,后者是Promise.then。

Promise有promiseresult等待返回,promise.then的result应该是已经输出了,所以打印出来是undefined。

  

上方delArr是请求参数的数组,遍历数组发起请求。希望在循环发起的请求结束之后执行后续操作,保证执行的顺序,可以使用await。下面是这种操作的打印顺序,先输出两个‘嘻嘻哈哈’下面的对象是请求拦截器中的config,感觉执行顺序是,请求挂起,执行.then,触发请求拦截器发起请求

在这里也写下对promise用法的理解: 外面套一层promise外壳,里面放需要执行的函数,根据执行的情况放resolve和reject的位置,把resolve和reject理解成出口,promise里的函数执行成功,对应的内容从resolve传递出去,失败则从reject传递出去,函数执行的成功还是失败是你自己定义的。后续的then对接resolve出口,拿到resolve出来的内容作为参数,catch则拿到reject传递出来的内容作为参数

### 如何在 Vue.js 中使用 Promise、`async` 和 `await` #### 使用场景 在现代 Web 开发中,异步操作无处不在。Vue.js 提供了多种方式来处理这些异步逻辑,其中最常见的是通过 Promises 结合 `async`/`await` 来简化代码结构并提高可读性。 #### 实现方法 当涉及到数据获取或其他耗时的任务时,在组件生命周期钩子内定义一个带有 `async` 关键字的方法是一个不错的选择。这允许内部调用被标记为 `await` 的表达式暂停执行直到其解析完毕后再继续[^1]。 对于简单的 HTTP 请求来说,可以利用 Axios 或者 Fetch API 并将其封装在一个返回 promise 的函数里: ```javascript // 定义一个服务类来进行API请求 class ApiService { static async fetchData(url) { try { const response = await fetch(url); if (!response.ok) throw new Error('Network response was not ok'); let data = await response.json(); return data; } catch (error) { console.error(`Error fetching data from ${url}`, error.message); throw error; // 抛错误以便外部捕获 } } } ``` 接着可以在任何地方轻松地调用这个静态方法,并且由于它是异步的,所以可以直接使用 `await` 调用来等待结果: ```vue <template> <div v-if="loading">Loading...</div> <ul v-else> <li v-for="(item, index) in items" :key="index">{{ item }}</li> </ul> </template> <script setup> import { ref, onMounted } from 'vue'; import { fetchData } from './services/apiService'; const loading = ref(true); const items = ref([]); onMounted(async () => { try { items.value = await fetchData('/api/items'); } finally { loading.value = false; } }); </script> ``` 上述示例展示了如何结合 Composition API (`setup`) 函数中的响应式变量以及组合式函数(如 `ref`, `onMounted`),从而实现更简洁明了的数据流控制[^4]。 值得注意的是,虽然这里展示的例子相对基础,但在实际项目开发过程中应当考虑更多因素,比如状态管理库 Vuex/Vuex Store 的集成、全局错误处理器等高级特性[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值