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

网站页面制作西安广告公司联系方式

网站页面制作,西安广告公司联系方式,做网站最清晰的字体,东莞模板建网站平台目录 Promise 普通函数和回调函数 Promise 简介 Promise 基本用法 async 和 await 的使用 Axios 介绍 Axios 入门案例 Axios 的 get 和 post 方法 Axios 拦截器 完! Promise 普通函数和回调函数 普通函数:正常调用的函数,一般函数…

目录

Promise

普通函数和回调函数

Promise 简介

Promise 基本用法

async 和 await 的使用

Axios 介绍

Axios 入门案例

Axios 的 get 和 post 方法

Axios 拦截器

完!


Promise

普通函数和回调函数

普通函数:正常调用的函数,一般函数执行完毕后才会继续执行下一行代码

回调函数:一种基于事件的,自动调用,未来会执行的函数。其他的代码不会等待回调函数执行完毕。

举个例子:那年,你和女神风华正茂

        承诺:考完试之后,一起去吃麻辣烫~  ---->  function(){ }

        1. 进行中 ---> 其他代码继续执行 (不会影响你和女神备考的行为)

        2. 成功    --->   准备好成功时处理的预案(找一家好吃的麻辣烫~)

        3. 失败    --->  准备好失败时处理的预案(找一个没人注意的墙角偷偷抹泪~)

Promise 就是一个方便我们自己设置一个回调函数的 API

Promise 简介

前端中的异步编程技术,类似 Java 中的多线程 + 线程结果回调

Promise,简单来说就是一个容器,里面保存着某个未来才会结束的事件的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的信息。Promise 提供统一的 API,可以异步操作都可以用同样的方法进行处理。

Promise 对象有以下两个特点:

        1. Promise 对象代表一个异步操作,有三种状态:Pending(进行中),Resolved(已完成),和 Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态。

        2. 一旦状态改变,就不会再发生变化。

Promise 基本用法

    <script>let promise = new Promise(function (resolve, reject) {console.log("promise do some code.....")resolve("promise success")})// 等待 promise 对象状态发生变化时才会执行的代码promise.then(function (value) {// promise 转换为 resolved 状态时 会执行的函数console.log('promise success' + value)}).catch(function (value) {// promise 转换为 reject 会执行的函数console.log("promise fail" + value)})console.log('other code1')console.log("other code 2")</script>

async 和 await 的使用

async 表示函数的:

        1. async 标识函数后,async 函数的返回值会编程一个 Promise 对象

        2. 如果函数内部返回的数据是一个非 Promise 对象,async 函数的记过会返回一个成功状态的 Promise 对象

        3. 如果函数内部返回的是一个 Promise 对象,则 async 函数返回的状态与结果由该对象决定

        4. 如果函数内部抛出的是一个异常,则 async 函数返回一个失败的 Promise 对象

        5. async 其实就是帮助我们用简洁的语法来获得一个 promise 对象~

    <script>async function fun1() {// return 10// throw new Error("somthing wrong")let promise = Promise.reject("hehe")return promise}let promise = fun1()promise.then(function(value){console.log("success" + value)}).catch(function(value){console.log("fail" + value)})</script>

await:

        1. await 右侧的表达式一般为一个 Promise 对象,但也可以是一个其他值

        2. 如果表达式是 Promise 对象,await 返回的是 Promise 成功的值

        3. 如果表达式是其他的值,则直接返回该值

        4. 如果表达式是一个失败状态的 promise,那么 await 会直接抛异常

        5. await 会等右边的 Promise 对象执行结束,然后再获取结果,所在方法的后续代码也会继续等待 await 执行

        6. await 必须在 async 函数中,但是 async 函数中可以没有 await

        7. await 其实就算给我们提供了一个快捷获得 Promise 对象成功状态的语法

    <script>async function fun1() {return 10}async function fun2() {// let res = await fun1() // 会返回一个 10 普通值let res = await Promise.reject("something wrong")console.log("await got" + res)}fun2()</script>

Axios 介绍

AJAX:

我们在前面提到了 AJAX,AJAX 可以在步重新加载整个页面的情况下,与服务器交换数据,并更新部分网页内容。前面我们使用 XMLHttpRequest 只是实现 Ajax 的一种方式,本次我们使用 Vue Axios 方式来实现。

Axios 入门案例

案例需求:请求后台获取随机土味情话

请求的 URL:https://api.uomg.com/api/rand.qinghua

请求的方式: GET/POST

数据返回的格式:{"code":1,"content":"我努力不是未来"}

2. 准备项目

npm create vite@4.3.2

npm i

npm i axios

<script setup>import axios from 'axios'import {ref,reactive} from 'vue'let message = reactive({"code":1,"content":"88888"})function getLoveMessage(){// 使用 axios 发送请求// axios({设置请求的参数}) 请求三要素:1. 请求的 url 2. 请求的方式 3. 请求的参数let promise = axios({url:'https://api.uomg.com/api/rand.qinghua',method:'get',data:{// 当请求的方式为 post 的时候,data 中的数据会以 JSON 串形式放入请求体,否则会以keyvalue 的形式放在 url 后}})promise.then(function (response) {console.log(response)// response 响应结果对象// data 服务端响应回来的数据// status 响应状态码 200// headers 本次响应所有的响应头// request 本次请求发送时使用的 XMLHttpRequest 对象// message.code = response.data.code// message.content=response.data.contentObject.assign(message,response.data) // 这个函数会将后面这个对象的同名属性值赋值给前面对象的同名属性值}).catch(function(error){console.log(error)})}// axios 可以简写function getLoveWords() {return axios({url:'https://api.uomg.com/api/rand.qinghua',method:'post',data:{}})}//  简化1// function getLoveMessage2() {//   let promise = getLoveWords()//   promise.then(//     function(response){//       Object.assign(message,response.data)//     }//   )// }// // 简化2
//     async function getLoveMessage2(){
//       let response = await getLoveWords()
//       Object.assign(message, response.data)
//     }//简化3async function getLoveMessage2() {// let {data} 为对象结构赋值语法,从一个对象中提取指定的元素let {data} = await getLoveWord()Object.assign(message,response.data)}
</script><template><div><h1 v-text="message"></h1><button @click="getLoveMessage()">change</button></div>
</template><style scoped>
</style>

Axios 的 get 和 post 方法

配置添加语法:

测试 axios 的get 方法:

<script setup type="module">
import axios from 'axios'
import { onMounted, reactive } from 'vue';
let jsonData = reactive({code:1, content:'我努力不是为了你而是因为你'})let getLoveWords = async () => {try {return await axios.get('https://api.uomg.com/api/rand.qinghua',{params: { // 向url后添加的键值对参数format: 'json',username: 'zhangsan',password: '123456'},headers: { // 设置请求头'Accept': 'application/json, text/plain, text/html,*/*'}})} catch (e) {return await e}
}let getLoveMessage = async () => {let { data } = await getLoveWords()Object.assign(jsonData, data)
}/* 通过onMounted生命周期,自动加载一次 */
onMounted(() => {getLoveMessage()
})
</script><template><div><h1>今日土味情话:{{jsonData.content}}</h1><button @click="getLoveMessage">获取今日土味情话</button></div>
</template><style scoped>
</style>

测试 axios 的post 方法:

<script setup type="module">
import axios from 'axios'
import { onMounted, reactive } from 'vue';
let jsonData = reactive({code:1, content:'我努力不是为了你而是因为你'})
let getLoveWords = async () => {try {return await axios.post('https://api.uomg.com/api/rand.qinghua',{ // 请求体中的JSON数据username: 'zhangsan',password: '123456'},{ // 其他参数params: { // url上拼接的键值对参数format: 'json'},headers: { // 请求头'Accept': 'application/json, text/plain, text/html,*/*','X-Requested-With': 'XMLHttpRequest'}})} catch (e) {return await e}
}
let getLoveMessage = async () => {let { data } = await getLoveWords()Object.assign(jsonData, data)
}
/* 通过onMounted生命周期,自动加载一次 */
onMounted(() => {getLoveMessage()
})
</script><template><div><h1>今日土味情话:{{jsonData.content}}</h1><button @click="getLoveMessage">获取今日土味情话</button></div>
</template><style scoped>
</style>

Axios 拦截器

在 axios 发送请求之前,或者是数据想赢回来执行 then 方法之前做一些工作,可以使用拦截器完成:

App.vue:

<script setup>import request from './axios'import {reactive} from 'vue'let message = reactive({"code":1,"content":xxxxxxxx,})function getLoveWord(){return request.post("https://api.uomg.com/api/rand.qinghua")}async function getLoveMessage() {let {data} = await getLoveWord()Object.assign(message,response.data)}</script><template><div><h1 v-text="message"></h1><button @click="getLoveMessage()">change</button></div>
</template><style scoped>
</style>

axuis.js:

import axios from 'axios'// 使用 axios 函数创建一个可以发送请求的实例对象
const instance = axios.create({})// 设置请求拦截器
instance.interceptors.request.use((config) => {console.log('请求前拦截器')// 请求之前,设置请求信息的方法config.headers.Accept="application/json,text/plain,text/html,*/*"// 设置完毕后 必须要返回 configreturn config},function(error) {console.log("请求前拦截器异常方法")// 返回一个失败状态的 promisereturn Promise.reject("something wrong")}
)instance.interceptors.response.use(//响应状态码为 200 要执行的方法// 处理相应数据// 最后要返回 responsefunction(response){console.log("reponse success:")console.log(response)return response},function(error) {console.log("response fail")console.log(error)// 最后一定要响应一个 promisereturn Promise.reject("something wrong")}
)//默认导出 instance
export default instance

完!

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

相关文章:

  • VS2022+DirectX9坐标系与基本图元之基本图元(BasePrimitive)_0302
  • 网站建设实训总结及体会网站开发与电子商务
  • 为什么MainWindow.xaml绑定的datacontext,EtherCATSuiteCtrl.xaml直接用了?
  • 建设企业网站综合考虑网页打不开用什么浏览器
  • 网站建设需要掌握什么知识网络营销工具的使用
  • 贪心算法深度解析:从理论到实战的完整指南
  • 基于Langchain的实践(电商客服)
  • 百度首页排名优化公司沈阳网站搜索引擎优化
  • 旅游网站建设初衷新网站应该怎么做
  • 网站做短信验证需要多少钱衡水学校网站建设
  • (立控信息LKONE)智能仓储管理,高效・安全・精准,一 “智” 到位
  • 内存管理C++
  • 建网站算法企业网站设计规范
  • 建设部网站官网 施工许可wordpress可以装多少会员数据库
  • DeepCFD+:一种工业级 CFD 代理模型训练框架【深度学习+流体力学】
  • 设计师服务平台鱼巴士医疗网站优化公司
  • 网站页面设计需要遵循的六大原则wordpress 图片链接
  • 网站网页设计培训机构浙江住房和城乡建设厅网站
  • ElectrumX介绍
  • miniAPP图片上传等api触发项目onhide等周期函数问题
  • 广州专业网站网络营销学院
  • 网站友链怎么做大鹏新网站建设
  • AI智能体:企业级智能体管理解决方案
  • 温州网站开发培训滨海网站建设公司
  • 网站建设吉金手指排名12恶意点击别人的网站
  • git note
  • 国外炫酷网站大连网站开发建
  • BugKu Web渗透之 文件包含
  • 时间序列数据异常检测算法(1)——传统统计学基础算法
  • 【TI毫米波雷达】适配雷达的Flash芯片选型及QE位的默认值设置,串口回环BUG的解决方案汇总