概述
async、await 是用Promise异步函数中的。
在第一次接触这两个(async、await)这两个关键词的时候,是在视频教程上看到的,第一次看到别人在用,还没什么感触,直到发现很多人在用,我就找到相关的介绍,试着用了一下,真是挺香的
在以前使用promise 中通常使用then 和catch 的方法来接收返回成功和失败的结果,但是在ES2017中引入了两个关键字,解决了不使用then 与catch 也能优雅的接收结果。
首先-了解一下吧
了解一下前因后果吧! 异步编程允许我们在执行一个长时间任务时,程序不需要等待,而是继续执行之后的代码。知道这些任务完成之后才来通知你。通常是以回调函数callback 的形式进行的。这种形式避免了程序的阻塞,大大提高了执行效率。
传统的回调函数(callback Function)
setTimeout(() => {
console.log('你好啊,我后执行');
}, 3000);
console.log('我会先执行');
执行多个异步操作
如果执行多个异步操作,当第一个任务执行完成之后,再回调函数中执行第二个任务,然后再执行第三个任务,这就形成了回调地狱。为了解决这个问题,promise 应运而生。
setTimeout(() => {
console.log('我是第一个');
setTimeout(() => {
console.log('我是第二');
setTimeout(() => {
console.log('我是最后');
}, 3000);
}, 3000);
}, 3000);
使用promise
在promise 中fetch() 就是一个很好的例子
关于fetch() d的介绍 https://www.ruanyifeng.com/blog/2020/12/fetch-tutorial.html
使用fetch() 请求,立马发送了一个Promise的对象。 但是想拿到promise 中的结果,就要使用then ,catch ;当然也可以使用async 和awit
我很懒,不想写了… 下面视频自己看吧!!!
https://www.bilibili.com/video/BV1WP4y187Tu?from=search&seid=1317811252126814687&spm_id_from=333.337.0.0
我自己的使用笔记!!!
在做uniapp 中请求数据的时候,看到教程老师封装api 后可以随意的调用,使用起来挺方便的。下面来看下教程中老师封装的api
1、创建一个api.js文件
const BASE_URL = 'https://api-hmugo-web.itheima.net'
export const myRequest = (options)=>{
return new Promise((resolve,reject)=>{
uni.request({
url:BASE_URL + options.url,
method: options.method || 'GET',
data: options.data || {},
success: (res)=>{
resolve(res)
},
fail: (err)=>{
uni.showToast({
title: '请求接口失败'
})
reject(err)
}
})
})
}
2、放在全局的 main.js 中引用上方api.js
import {myRequest} from "./uni_js/api.js"
Vue.prototype.$myRequest = myRequest
3、在 .vue 文件中发送请求调用
<template>
<view>
渲染数据....
</view>
</template>
<script>
export default {
data() {
return {
list:[]
}
},
components:{},
onLoad() {
this.getGoodList()
},
methods: {
getGoodList(){
this.$myRequest({
url:"/api/public/v1/goods/search"
}).then((reslut) => {
this.good_list = reslut.data.message.goods
})
},
async getGoodList(){
const rest = await this.$myRequest({
url:"/api/public/v1/goods/search"
})
this.list = rest.data.message.goods
console.log(rest)
console.log('我成功了')
},
}
}
</script>
<style>
</style>
|