首页 > 其他分享 >vue多个方法的异步请求

vue多个方法的异步请求

时间:2022-12-02 17:12:41浏览次数:35  
标签:异步 resolve console 请求 vue Promise reject promise log

1、async 和 await

async/await 是一种建立在Promise之上的编写异步或非阻塞代码的新方法。async 是异步的意思,而 await 是 async wait的简写,即异步等待。

 1 // 假设这是我们要请求的数据
 2 function getSomething(n) {
 3     return new Promise(resolve => {
 4         // 模拟1s后返回数据
 5         setTimeout(() => resolve(222), 1000);
 6     });
 7 }
 8 
 9 function requestSomething() {
10     console.log(111);
11     getSomething().then(res => console.log(res));
12     console.log(333);
13 }
14 requestSomething() //这个时候会输出 111,333,222
15 
16 // 如果想要等数据返回后再执行后面的代码,那么就要使用 async/await
17 async function requestSomething() {
18     console.log(111);
19     // 这时something会等到异步请求的结果回来后才进行赋值,同时不会执行之后的代码
20     const something = await getSomething();
21     console.log(something)
22     console.log(333);
23 }
24 requestSomething() //这个时候会输出 111,222,333

 

2、Promise.all() 

 

Promise.all() 方法接收一个promise的iterable类型(注:Array,Map,Set都属于ES6的iterable类型)的输入,并且只返回一个Promise实例, 那个输入的所有promise的resolve回调的结果是一个数组。这个Promise的resolve回调执行是在所有输入的promise的resolve回调都结束,或者输入的iterable里没有promise了的时候。它的reject回调执行是,只要任何一个输入的promise的reject回调执行或者输入不合法的promise就会立即抛出错误,并且reject的是第一个抛出的错误信息

 1 let p1 = new Promise((resolve, reject) => {
 2   getNumber()
 3   resolve('成功了p1')
 4 })
 5 
 6 let p2 = new Promise((resolve, reject) => {
 7   getName()
 8   resolve('成功了p2')
 9 })
10 let p3 = new Promise((resolve, reject) => {
11 setTimeout(resolve, 100, 'foo');
12 });
13 
14 Promise.all([p1, p2, p3]).then((result) => {
15   console.log(result) // ['成功了p1', '成功了p2', 'foo']
16 }).catch((error) => {
17 })

Promise.all 在任意一个传入的 promise 失败时返回失败。例如,如果你传入的 promise中,有四个 promise 在一定的时间之后调用成功函数,有一个立即调用失败函数,那么 Promise.all 将立即变为失败。

 1 var p1 = new Promise((resolve, reject) => {
 2   setTimeout(resolve, 1000, 'one');
 3 });
 4 var p2 = new Promise((resolve, reject) => {
 5   setTimeout(resolve, 2000, 'two');
 6 });
 7 var p3 = new Promise((resolve, reject) => {
 8   reject('reject');
 9 });
10 
11 Promise.all([p1, p2, p3]).then(values => {
12   console.log(values);
13 }).catch(reason => {
14   console.log(reason)
15 });

标签:异步,resolve,console,请求,vue,Promise,reject,promise,log
From: https://www.cnblogs.com/duanxuan/p/16944993.html

相关文章

  • vue3自定义修饰符
    v-model 有一些内置的修饰符,例如 .trim,.number 和 .lazy都是对输入的数据做过滤处理vue也可以自定义实现创建一个自定义的修饰符 capitalize,它会自动将 v-model......
  • vue3 实现自定义 v-model
    在vue中,form表单输入可以通过v-model实现双向数据绑定,例如:<inputv-model="text"/>{{text}}在表单中输入时,页面展示的data-text也会相应改变如果是封装......
  • vue3 + element plus 使用字节跳动图标
    使用场景:提一下vue2用法>> 下面回到正题vue3用法1 安装包:npminstall@icon-park/vue-next--save2 字节跳动图标库取图地址>>  3 用法:<te......
  • arthas 生成运行时的方法请求与响应参数
      请求格式watch类方法'{params,returnObj,throwExp}'-n5-x3其中参数说明:params是参数列表,是一个数组,可以直接通过下标方式访问returnObj返回的结果t......
  • vue中swiper轮播插件的一个错误
    在引入插件的时候无论如何也不生效,后来发现2.添加HTML内容。Swiper7的默认容器是'.swiper',Swiper6之前是'.swiper-container'。<divclass="swiper"><divclass="s......
  • Vue2(笔记11) - Vue核心 - 列表过滤(watch 和 computed实现)、列表排序
    列表过滤需求:输入关键词,过滤列表信息watch方法实现<divid="root"><h2>{{title}}</h2><inputtype="text"placeholder="请输入名字"v-model="keywords"><ul>......
  • 数据请求
    1.小程序中的数据请求有什么限制?以及如何解决这种限制1.限制:1.只能请求HTTPS类型的接口2.必须将接口的域名添加到信任列表中......
  • vue3新增知识点(组合式API、ref和reactive、响应式原理、setup、watch和watchEffect)持
    1.组合式API和声明式API的区别,组合式API的优点2.Vue3的响应式原理通过Proxy(代理):拦截对象中任意属性的变化:包括:属性值的读写、属性的添加、属性的删除等。通过reflect(反射):......
  • vuedraggable设置禁止跨区块拖拽
    触发原因:同一个vue页面循环使用了拖拽组件,但是需要块与块之间禁止关联拖拽。:group="item.id"group不同就可以了。<divv-for="iteminList":key="item.id"><......
  • vue网页变灰色
    一些重要特殊的日子,为了表示哀悼,需要将网页显示为灰色加上两行css即可实现<template><el-container>......</el-container></template><stylescoped>.el......