promise用法

对Promise的理解以及Promise的基本用法 一、理解Promise ① 定义 ② 优点 ③ 特点 ④ 缺点 二、Promise基本用法 ① resolve函数的作用 ② reject函数的作用 ③ then方法 ④一个异步加载图片的例子 三、Promise的其他常见方法 ①Promise.prototype.then() ②Promise.prototype.catch() ③Promise.prototype.finally() ④Promise.all() ⑤Promise.race() 四、 阅读详情

接口调用方式

我们都知道一般我们前台获取的数据都是从后台获取的,我们一般采用下面几种方式调取后台接口数据:

  1. 原生js的AJAX
  2. jquery封装的AJAX(偏向于操作DOM,不适用于vue)
  3. fetch
  4. axios

promise

创建后端接口

我们先用node创建本地服务,代码如下:

  • npm init -y
  • npm install express@4.17.1
  • npm install cors
const express = require("express");
const app = express();
const cors = require("cors");
app.use(cors());

app.get("/list", (req, res) => {
  res.send("展示数据列表信息");
});
app.get("/add", (req, res) => {
  res.send("添加列表内容");
});
app.get("/del", (req, res) => {
  res.send("删除列表内容");
});

app.listen("3000", () => {
  console.log("服务启动了 http://127.0.0.1:3000");
});

前端请求接口

<body>
    <script src="jquery-3.6.0 .js"></script>
    <script>
      // 获取列表信息
      $.ajax({
        url: "http:127.0.0.1:3000/list",
        type: "get",
        data: {},
        success: function(res) {
          console.log(res);
          // 实现添加功能
          $.ajax({
            url: "http:127.0.0.1:3000/add",
            type: "get",
            data: {},
            success: function(res) {
              console.log(res);
              // 实现删除功能
              $.ajax({
                url: "http:127.0.0.1:3000/del",
                type: "get",
                data: {},
                success: function(res) {
                  console.log(res);
                }
              });
            }
          });
        }
      });
    </script>
  </body>

promise基本用法

<script>
      var p = new Promise(function(resolve, reject) {
        resolve(); //成功时候调用的函数
        reject(); //失败时候调用的函数
      });
      p.then(
        function(res) {
          从resolve处理函数得到的结果;
        },
        function(res) {
          从reject处理函数得到的结果;
        }
      );
    </script>

说明

  1. 如果异步处理函数中运行成功会自动调用resolve函数,如果运行失败会自动调用reject函数。
  2. 不管正确还是错误的处理结果都会在then方法中捕获到

promise常用API

promise实例常用方法:

  • then是捕获上面运行正常的结果
  • catch是捕获上面运行失败的结果
  • finally是捕获不管运行成功还是失败都会执行的结果

promise对象常用方法:

Promise.all()处理多个异步并发任务,所有的任务都执行完毕才能获取结果
Promise.race()处理多个异步并发任务,只要有一个任务完成就能获取结果

fetch

fetch也是一种新的请求后台接口的方式,语法如下:

fetch(url)
    .then(fn1)
    .then(fn2)
    .catch(fn3)
    ....

代码示例:

<script>
      fetch("http://127.0.0.1:3000/list")
        .then(function(data) {
          return data.text();
        })
        .then(function(data) {
          console.log(data);
        });
    </script>

axios

简介:

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

特性

  1. 从浏览器中创建 XMLHttpRequests
  2. 从 node.js 创建 http 请求
  3. 支持 Promise API
  4. 拦截请求和响应
  5. 自动转换 JSON 数据

基本语法

npm install axios

axios.get('/list').then(res=>{
    res是后台响应的对象,res.data是获取后台返回的具体数据
)

axios基本API

axios中封装的有下面几个方法:

  1. get 查询
  2. post 添加
  3. delete 删除
  4. put 更新

get和delete请求

(1)问号传参

get和delete传参方式类似,我们以get请求为例演示:

比如前端发送数据如下:

 <script>
      axios.get("http://127.0.0.1:3000/list?id=1").then(function(res) {
        console.log(res.data);
      });
    </script>

后端app.js接受传参如下:

app.get("/list", (req, res) => {
  res.send("获取博客信息列表" + req.query.id);
});

(2)动态传参

前端代码如下:

<script>
      axios.get("http://127.0.0.1:3000/list/1").then(function(res) {
        console.log(res.data);
      });
    </script>

后端接口数据如下:

app.get("/list/:id", (req, res) => {
  res.send("获取博客信息列表" + req.params.id);
});

(3)params传参

前端传参如下:

<script>
      axios
        .get("http://127.0.0.1:3000/list", {
          params: {
            id: 1,
            name: "tom"
          }
        })
        .then(function(res) {
          console.log(res.data);
        });
    </script>

后端接收如下:

app.get("/list", (req, res) => {
  res.send("获取博客信息列表" + req.query.id + req.query.name);
});

post和put请求

前端传参:

<script>
      axios
        .post("http://127.0.0.1:3000/add", {
          username: "tom",
          pass: "111"
        })
        .then(function(res) {
          console.log(res.data);
        });
    </script>

后端接口获取数据(注意配置才能获取post请求的数据)

app.use(express.json());//后端配置获取post传递的json格式数据
app.post("/add", (req, res) => {
  res.send("实现添加功能" + req.body.username + req.body.pass);
});

或者前端传递参数如下:

<script>
      let params = new URLSearchParams();
      params.append("username", "tom"); //参数1是设置传递的变量名 参数2是传递的值
      params.append("pass", "111"); //参数1是设置传递的变量名 参数2是传递的值
      axios.post("http://127.0.0.1:3000/add", params).then(function(res) {
        console.log(res.data);
      });
    </script>

后端接口如下:

app.use(express.urlencoded({ extended: false }));//解析后传递格式是

app.post("/add", (req, res) => {
  res.send("实现添加功能" + req.body.username + req.body.pass);
});

put请求类似比如要id为2的这条信息更新为username为jim,age=20,所以前端的请求代码如下:

 <script>
      axios
        .put("http://127.0.0.1:3000/edite/2", {
          username: "jim",
          age: 20
        })
        .then(function(res) {
          console.log(res.data);
        });
    </script>

后端代码如下:

app.use(express.json());
app.put("/edite/:id", (req, res) => {
  res.send("实现更新功能" + req.body.username + req.body.age);
});

注意

我们上面的前端请求的接口地址每次都有一个前缀http://127.0.0.1:3000,为了更方便的进行代码管理,我们可以通过axios提供的一个方法设置访问的地址前缀:
比如上面的前端代码,我们如下操作会更加简洁

 <script>
      axios.defaults.baseURL = "http://127.0.0.1:3000/";
      axios
        .put("edite/2", {
          username: "jim",
          age: 20
        })
        .then(function(res) {
          console.log(res.data);
        });
    </script>

async和await

async和await是es7引入的新语法,更加方便异步编程的调用
async用在函数前面,async函数的返回值prommise的实例对象
await关键字用于async函数中,主要是获取异步代码执行的结果。

原代码示例如下:

<script>
      axios.defaults.baseURL = "http://127.0.0.1:3000/";
      axios.get("list").then(function(res) {
        console.log(res.data);
      });
</script>

用async和await改造如下:

      axios.defaults.baseURL = "http://127.0.0.1:3000/";
      async function queryData() {
        const res = await axios.get("list");
        console.log(res);
      }
      queryData();

什么是Promise.all(),它的用法是什么? 是 JavaScript 中用于处理多个 Promise 的方法。它接受一个可迭代对象(如数组)作为参数,并返回一个新的 Promise,该 Promise 在所有输入的 Promise 完成后解决,或者在任何一个输入的 Promise 被拒绝时拒绝。 阅读详情

相关推荐

【STM32/GD32】Keil uVision生成bin文件:从编译选项到Bootloader升级实战

本文详细讲解了如何在Keil uVision中配置STM32/GD32工程,使其在编译后自动生成Bootloader升级所需的bin文件。通过解析fromelf工具的使用、构建后命令的配置以及内存布局规划,深入阐述了bin文件在固件升级中的核心作用,并提供了串口Bootloader的实战框架与常见问题解决方案。

weixin_29190169的博客 393

fetch、axios

一、fetch fetch也是一种新的请求后台接口的方式,语法如下: fetch(url) .then(fn1) .then(fn2) .catch(fn3) .... 代码示例: <script> fetch("http://127.0.0.1:3000/list") .then(function(data) { return data.text(); }) .then(

sjs1766349405的博客 711

锐捷交换机配置SSH

锐捷交换机配置ssh 一、组网需求 通过ssh功能可以远程登录管理设备 二、配置步骤 全局开启ssh服务,并且指定ssh版本 Ruijie>enable Ruijie#configure terminal Ruijie(config)#enable service ssh-server ------>开启SSH服务,默认关闭 Ruijie(config)#ip ssh version 2 ------>默认1.99版本,设置为版本2 添加登

Loners_fan的博客 1万+

如何用 Promise 自定义一个 GET 请求的函数

写在最前面 近期 review 自己以前的代码的时候,看到 promise 的使用方法,用的比较模糊。含义不清,用法凌乱,这里重新温习一下基础知识。 下面是

weixin_34366546的博客 1045

DRV2605L触觉驱动芯片实战指南:从自动校准到音频转触觉应用

触觉反馈技术是现代人机交互的核心组成部分,它通过精确控制振动马达来模拟物理触感,广泛应用于智能手机、游戏手柄和汽车触摸屏等领域。其原理在于将电信号转化为机械振动,关键在于如何高效、精准地驱动不同类型的马达(如ERM和LRA)。这项技术的核心价值在于提升交互的真实感和沉浸感。在工程实践中,集成驱动芯片如DRV2605L通过内置智能反馈引擎和自动校准功能,解决了传统驱动方式响应慢、效果不一致的难题。它特别适用于需要高质量触觉反馈的应用场景,例如消费电子、游戏外设和车载信息娱乐系统。其中,自动校准能自适应优化驱动

weixin_42631411的博客 342

解决相同型号USB设备在Windows系统中重复枚举问题

本文详细解析了Windows系统中相同型号USB设备重复枚举问题的成因及解决方案。通过修改注册表、使用PsTools工具清除设备记录以及编程实现自动化处理等方法,有效解决设备识别混乱问题,特别适用于自动化测试和工业设备管理场景。

weixin_42561040的博客 565

fetch框架通过iserver数据服务创建数据集

let requestbody={"datasetType":"POINT","datasetName":"POINT1","charset": "GB18030"} entity=JSON.stringify(requestbody) newDataSet("http://localhost:8090/iserver/services/data-editer_shujuqiao/rest/data", "ds1", "POINT1",entity); //put新建数据集,并设置.

shanshanqwertyuiop的博客 281

acados安装与调试指南:版本兼容性问题

在计算机编程领域,软件工具和库的安装与调试是每个开发者必经的挑战。最近,在安装和使用acados库时,我遇到了一个有趣的问题,这里我将详细分享我的经验和解决方案。

m0_62153576的博客 740

GET和POST的区别、Promise的两个方法及POST请求常见的参数类型

FireFox的POST请求就只发送一个TCP数据包。到底发多少个tcp包,和GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的,而POST没有。

一个普通人的博客 1046

基于Simulink的电动汽车电池管理系统热管理优化仿真

电动汽车电池管理系统(Battery Management System, BMS)中的热管理是确保电池性能、安全性和寿命的关键环节。温度过高或过低都会显著影响电池的工作效率和寿命,因此需要对电池组进行精确的热管理。基于MATLAB/Simulink的仿真平台可以用于建模和优化电池热管理系统,包括热分布预测、冷却策略设计以及热平衡控制等。本项目旨在构建一个完整的电动汽车电池热管理优化仿真模型,并通过仿真验证系统的性能。

xiaoheshang_123的博客 462

把表的每一次改动都记下来:SAP 表变更日志 DBTABLOG/DBTABPRT 与 SCU3 全面解析

摘要:SAP系统提供了数据库表变更日志功能(SCU3/DBTABLOG),用于追踪关键配置表的变更历史。该功能通过profile参数rec/client和表级技术设置双重开关控制,能记录谁在何时修改了哪些数据。与业务变更凭证(CDHDR/CDPOS)和应用日志(SLG1)不同,表变更日志提供技术层面的审计线索,适用于快速定位生产事故中的异常数据变更。但需注意其限制:不支持超宽表和大批量变更,且可能引发性能问题。建议将表变更日志与业务变更凭证、应用日志结合使用,构建完整的审计追踪体系。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1691

前后端项目分离之前端(vue项目)如何调用后端接口

本文所用vue-cli是3.0版本的,所以首先需要创建一个vue.config.js文件,然后配置axios,就可以请求接口获取数据了。 1.main.js文件中: import axios from 'axios' Vue.prototype.$axios = axios axios.defaults.baseURL = '请求地址';//后端开发环境地址 axios.defaults.headers.post['Content-Type'] = 'application/json;charset

Luomaomao_baby的博客 3万+

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

9 个必须知道的 Promise 高级用法

Promise 对象代表一个异步操作的最终完成(或失败)及其结果值。then()then()Promise 的特征之一是。

qq_28791753的博客 3315

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

详解Promise用法

Promise 是 JavaScript 中用于处理异步操作的一种重要机制。Promise 用于解决 JavaScript 中异步操作的复杂性,通过状态管理、链式调用、错误处理等功能,实现代码的清晰、有序与可维护,避免回调地狱,提升异步编程的效率与体验。

qq_52869537的博客 1270

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

React—Promise用法

Promise是什么? 从用途上来说: (1)promise主要用于异步计算。 (2)可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果。 (3)可以在对象之间传递和操作promise,帮助我们处理队列。 从语法上说: (1)Promise 是一个对象,从它可以获取异步操作的消息。 (2)Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理 Promis...

午夜阳光 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

promise用法总结以及手写promise

Promise.all() 接收一个 Promise 数组,返回一个新的 Promise,当所有的 Promise 都成功时,该 Promise 会成功,返回一个数组。Promise.allSettled() 接收一个 Promise 数组,返回一个新的 Promise,无论所有的 Promise 是成功还是失败,都会在所有 Promise 结束后返回。Promise.any() 返回一个新的 Promise,它会在第一个成功的 Promise 返回时成功。

涂涂 1586

promise() 用法

es6 promise() 用法 Promise 是异步操作,用于解决回调函数和事件 模拟promise环境 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width...

hammer1010的博客 2547

Promise用法

1.什么是promise?Promise 是异步编程的一种解决方案:从语法上讲,promise是一个对象,从它可以获取异步操作的消息;promise有三种状态:pending(等待态),fulfiled(成功态),rejected(失败态);状态一旦改变,就不会再变。创造promise实例后,它会立即执行。2.promise解决了什么问题?回调地狱问题。代码难以维护, 常常第一个的函数的输出是第二个函数的输入这种现象promise可以支持多个并发的请求,获取并发请求中的数据。

weixin_52512511的博客 563

promise 基本用法

promise 基本用法 promise-study

飞猪 178

整会promise这8个高级用法,再被问倒来喷我

promise高级用法

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 1895

promise的用法

回调方法:就是将一个方法 func2 作为参数传入另一个方法 func1 中,当 func1 执行到某一步或者满足某种条件的时候才执行传入的参数 func2Promise 是 ES6 引入的异步编程的新解决方案。Promise 对象三种状态:初始化、成功、失败 pending-进行中、resolved-已完成、rejected-已失败就好像,你跟你女朋友求婚,她跟你说她要考虑一下,明天才能给你答案,这就是承诺(promise)。

qq_45814648的博客 1227

js Promise.all 和 Promise.allSettled 的区别和用法

js Promise.all 和 Promise.allSettled 的区别和用法

Lai助网络科技的博客 1000

ES6 之 Promise用法详解

Promise 详解 源码解析

weixin_42707287的博客 5040

Promise的用法

首先,我们要知道什么是Promise呢,Promise就是把异步处理和处理规则进行规范化,简化了我们的程序,可以不想以前执行的时候层层的回调函数,让我们看起来很难受. // 例如以前 那我们不是要写5 到 6个回调函数 甚至更多,不用你说,你自己看着头晕, 别看看你的代码也会头晕 代码的维护性也很差 let admin= function(params, callback){ store.g...

小蜜蜂的博客 572
上一篇: Vue组件以及传值
下一篇: Vue路由
HUSBANDL
博客等级 码龄6年 38粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值