IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 关于async、await 与 Promise的理解函数请求方法与使用 -> 正文阅读

[JavaScript知识库]关于async、await 与 Promise的理解函数请求方法与使用

概述

async、await 是用Promise异步函数中的。

在第一次接触这两个(async、await)这两个关键词的时候,是在视频教程上看到的,第一次看到别人在用,还没什么感触,直到发现很多人在用,我就找到相关的介绍,试着用了一下,真是挺香的

在以前使用promise中通常使用thencatch的方法来接收返回成功和失败的结果,但是在ES2017中引入了两个关键字,解决了不使用thencatch也能优雅的接收结果。

首先-了解一下吧

了解一下前因后果吧!
异步编程允许我们在执行一个长时间任务时,程序不需要等待,而是继续执行之后的代码。知道这些任务完成之后才来通知你。通常是以回调函数callback的形式进行的。这种形式避免了程序的阻塞,大大提高了执行效率。

传统的回调函数(callback Function)


// 我们使用setTimeout()让一个函数在制定的时间后执行
setTimeout(() => {
    console.log('你好啊,我后执行');
}, 3000);

console.log('我会先执行');

//输出结果========
//我会先执行
//你好啊,我后执行

执行多个异步操作

如果执行多个异步操作,当第一个任务执行完成之后,再回调函数中执行第二个任务,然后再执行第三个任务,这就形成了回调地狱。为了解决这个问题,promise应运而生。


setTimeout(() => {
    console.log('我是第一个');

    setTimeout(() => {
        console.log('我是第二');

       setTimeout(() => {
           console.log('我是最后');
       }, 3000);

    }, 3000);
    
}, 3000);

//输出结果========
//我是第一
//我是第二
//我是最后

使用promise

promisefetch()就是一个很好的例子

关于fetch()d的介绍
https://www.ruanyifeng.com/blog/2020/12/fetch-tutorial.html

在这里插入图片描述
使用fetch()请求,立马发送了一个Promise的对象。
但是想拿到promise中的结果,就要使用then,catch;当然也可以使用asyncawit

我很懒,不想写了…
下面视频自己看吧!!!

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'
//向外抛出一个封装的 promise 请求
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: {
			// 请求方法第一种方法============使用then接收结果
			getGoodList(){
				this.$myRequest({
					url:"/api/public/v1/goods/search"
				}).then((reslut) => {
					this.good_list = reslut.data.message.goods
				})
			},
			
			// 第二种请求方法=========使用async、awit接收结果
			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>


  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:53:24  更:2022-03-06 12:56:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:03:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码