异步操作,promise、axios

一、异步操作(异步编程)、同步操作

异步操作是指在编程中,某个任务的执行不会立即完成,同时不会阻塞后续代码的执行。在异步操作中,程序可以继续运行,并在异步任务完成时得到通知并处理结果。这与同步操作相对,同步操作会阻塞程序的继续执行直到任务完成。

二、Promise

Promise 是 JavaScript es6 的一个特性,它允许你在异步操作(如网络请求)完成后执行某些代码。它代表了一个将来才会知道结果的操作。Promise 可以处于以下三种状态之一:

  • Pending(进行中):初始状态,既没有成功,也没有失败,也可以叫做等待态。

  • Fulfilled(已成功):操作成功完成。

  • Rejected(已失败):操作失败。

具体步骤

一、

let promise = new Promise((resolve, reject) => {
  // 异步操作
  if (1、0) {
    resolve(value); // 成功时调用  为1的时候表示调用成功
  } else {
    reject(error); // 失败时调用   为0的时候表示失败调用
  }
});

二、使用 Promise

promise.then(
  value => { /* 处理成功时的内容 */ },
  error => { /* 处理失败时的内容 */ }
);

三、catch():用于捕获 Promise 中发生的错误。

promise.catch(
  error => { /*错误处理的内容 */ }
);

成功时用.then,失败处理则用.catch()

四、使用finally:不管是成功还是失败,都可以使用.finally()

promise.finally(() => {
  // 写需要执行的代码内容。
});

总结一下:

举个小栗子:

创建一个请求id的函数,该函数返回一个promise,该promise在2秒后解决(成功),返回一个数字(也即指定商品列表的id)(提示:2秒后成功解决,请用setTimeout来模拟)

创建一个请求商品列表的函数,该函数接受一个id,该promise在3秒后解决(成功),返回一个商品列表,商品列表的数据如下

数据:

const data = {
    code:0,
    data:[
  { goodsName: '袜子', price: 20 },
  { goodsName: 'T恤', price: 25 },
  { goodsName: '牛仔裤', price: 50 },
  { goodsName: '连衣裙', price: 70 },
  { goodsName: '运动鞋', price: 80 },
  { goodsName: '夹克', price: 120 },
  { goodsName: '帽子', price: 15 },
  { goodsName: '围巾', price: 30 },
  { goodsName: '手套', price: 18 },
  { goodsName: '裙子', price: 60 },
  { goodsName: '卫衣', price: 90 },
],
}

解题代码:

<template>
</template>

<script setup>
import { ref } from 'vue';
const data = ref('[]')
const getid = () => {
  return new Promise((resolve, project) => {
    setTimeout(() => {
      resolve(2)
    }, 3000)
  })
};

const getlist = (id) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve([{
        code: 0,
        data: [
          { goodsName: '袜子', price: 20 },
          { goodsName: 'T恤', price: 25 },
          { goodsName: '牛仔裤', price: 50 },
          { goodsName: '连衣裙', price: 70 },
          { goodsName: '运动鞋', price: 80 },
          { goodsName: '夹克', price: 120 },
          { goodsName: '帽子', price: 15 },
          { goodsName: '围巾', price: 30 },
          { goodsName: '手套', price: 18 },
          { goodsName: '裙子', price: 60 },
          { goodsName: '卫衣', price: 90 },
        ]
      }]);
    }, 3000);
  });
};
//开始使用getid()函数
getid().then((id) => {
  console.log('成功2' + '+', id);
  return getlist();
}).then((res) => {
  const data = res[0]
  console.log('成功3' + JSON.stringify(data));
})
</script>

<style scoped></style>
相关推荐
匹马夕阳几秒前
Vue 3中导航守卫(Navigation Guard)结合Axios实现token认证机制
前端·javascript·vue.js
你熬夜了吗?1 分钟前
日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
前端·vue.js·信息可视化
Evand J9 分钟前
matlab绘图——彩色螺旋图
开发语言·matlab·信息可视化
我想学LINUX1 小时前
【2024年华为OD机试】 (A卷,100分)- 微服务的集成测试(JavaScript&Java & Python&C/C++)
java·c语言·javascript·python·华为od·微服务·集成测试
深度混淆1 小时前
C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合
开发语言·c#
雁于飞1 小时前
c语言贪吃蛇(极简版,基本能玩)
c语言·开发语言·笔记·学习·其他·课程设计·大作业
screct_demo1 小时前
詳細講一下在RN(ReactNative)中,6個比較常用的組件以及詳細的用法
javascript·react native·react.js
wenxin-2 小时前
NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各类图形?
开发语言·matlab·画图·ns3·lr-wpan
数据小爬虫@4 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python
健胃消食片片片片4 小时前
Python爬虫技术:高效数据收集与深度挖掘
开发语言·爬虫·python