vue 中 Promise 使用方法

vue 中 Promise 使用方法1.Promise基本概念:Promise是一个构造函数,所以可以new出一个Promise的实例;在Promise上有两个函数resolve(成功之后的回调函数)和reject(失败后的回调函数);在Promise构造函数的prototype属性上,有一个.then()方法。所以只要是Promise构造函数创建的实例,都可以访问到.then()方法;Promise表示一个一步操作,每当我们new一个Promise的实例,这个实例就代表具体的异步操作。Promise创建

大家好,又见面了,我是你们的朋友全栈君。

1. Promise 基本概念:

Promise是一个构造函数,所以可以 new 出一个Promise的实例;
在Promise上有两个函数 resolve (成功之后的回调函数)和 reject (失败后的回调函数);
在Promise构造函数的prototype属性上,有一个 .then() 方法。
所以只要是Promise构造函数创建的实例,都可以访问到 .then()方法;
Promise表示一个一步操作,每当我们new一个Promise的实例,这个实例就代表具体的 异步 操作
Promise创建的实例,是一个异步操作,这个异步操作结果,只有两种结果:
状态1:异步执行 成功,需要在内部调用成功的回调函数resolve把结果返回给调用者
状态2:异步执行 失败,需要在内部调用失败的回调函数reject把结果返回调用者
由于Promise的实例是一个异步操作,所以内部拿到操作结果后,无法使用return把操作结果返回给调用者 ,
这个时候只能使用 回调函数 的形式,把成功或失败的结果,返回给调用者,具体:
我们可以在new出来的Promise实例上,调用 .then()方法,预先为这个Promise异步操作,指定成功(resolve)和失败(reject)回调函数。

2.使用实例

store.js的actions中添加increment方法。测试reject的使用方法。

 increment (context) { 
   
      return new Promise((resolve, reject) => { 
   
        setTimeout(() => { 
   
          reject(new Error('2222222'))
        }, 1000)
      })
    }

调用increment

 handleActionDecrease () { 
   
      this.$store.dispatch('increment').then((data) => { 
   
        console.log(data)
        console.log(this.$store.state.count)
      }).catch((error) => { 
   
        console.log(error)
      })
    }

返回结果为
在这里插入图片描述
store.js的actions中添加increment方法。测试resolve的使用方法。

increment ({ 
    commit }) { 
   
      return new Promise((resolve, reject) => { 
   
        setTimeout(() => { 
   
          resolve("1111")
        reject(new Error('2222222'))
      }, 1000)
    })
    },

调用

 handleActionDecrease () { 
   
      this.$store.dispatch('increment').then((data) => { 
   
        console.log(data)
        console.log(this.$store.state.count)
      }).catch((error) => { 
   
        console.log(error)
      })
    }

输出

在这里插入图片描述

3、总结

resolve —>对应then
reject —>对应catch
另外,只有调用了resolve 或者reject 才会触发 then 和 catch

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148353.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Oracle数据恢复顾问(Data Recovery Advisor)「建议收藏」

    Oracle数据恢复顾问(Data Recovery Advisor)「建议收藏」Oracle数据恢复顾问用于当数据发生错误或故障时,进行自动收集数据故障信息,并生成恢复脚本,用于完成数据恢复。数据恢复顾问也可以主动检查故障。在这种模式下,它可以在数据库进程发现数据损坏并发出错误之前进行潜在的检测并分析数据故障。数据故障可能非常严重。例如,如果您当前的日志文件丢失,则无法启动你的数据库。。。。。

    2022年7月17日
    16
  • java版我的世界免费获取,持续更新~

    java版我的世界免费获取,持续更新~我的世界:Java版将与基岩版”地形”生成统一!1.18的隐藏更新!保持了JAVA版一致?事实上若你足够了解JAVA版的种子,你会发现其实很多不同的种子代码,会得到的是一个完全一致的世界。04问题四:未来未来JAVA版我的世界,和基岩版的Minecraft,它们真的可能变得完全一致!05问题五:Mojang为什么要让地形统一?一直以来,基岩版最大的魅力就。我的世界:java版免费披风,账号迁移轮到我了,快来看看怎么操作导致启动器显示我没有购买Minecraft,只有试玩资格。只有你选择微软账

    2022年7月8日
    49
  • apap图像全景拼接

    apap图像全景拼接文章目录基本原理图像配准关于最小割关于最大流apap的实现流程代码实现实验场景场景一场景二遇到的问题基本原理图像配准图像配准(apap)是将两张场景相关的图像进行映射,寻找其中的关系,多用在医学图像配准、图像拼接、不同摄像机的几何标定等方面,其研究也较为成熟。OpenCv中的stitching类就是使用了2007年的一篇论文(Automaticpanoramicimagestitchi…

    2022年9月22日
    5
  • 黑盒测试 因果图_黑盒测试的六种方法

    黑盒测试 因果图_黑盒测试的六种方法在一个功能模块中往往含有许多的功能模块,如果单独去测试每一个模块则会显得事倍功半,并且逻辑也会比较混乱,容易遗漏一些数据。因果图法是一个比较有用的方法,其考虑到了输入数据之间以及输入与输出之间的各种关系。一、下面首先介绍因果图中的基本符号 1、恒等含义:若原因出现则结果也出现,原因不出现,结果也不出现。即:如a=1.则b=1; a=0,则b=0。2、非(~)含

    2022年9月1日
    5
  • dz论坛修改html编辑器,discuz二次开发更换百度ueditor编辑器

    dz论坛修改html编辑器,discuz二次开发更换百度ueditor编辑器修改前必读:1、修改编辑器后会造成以前发过的帖子再次进行修改时(也就是编辑帖子操作)出现很多被DZ重写过的html标签,不方便进行修改,所以尽量在安装DZ后立刻进行修改。(当然,如果你有能力重写代码的话就可以无视啦)2、修改前请先在本地进行尝试或备份相关文件。需要修改的文件:templatedefaultforumpost_editor_body.htmtemplatedefaultforumpo…

    2022年5月12日
    45
  • WiFi测试规范总结

    WiFi测试规范总结当移植好一款wifi模块后,需要到检测机构去检测各项指标,取得相关认证。这时有必要了解下WiFi测试的相关测试内容,以便更好地跟测试机构人员交流。

    2022年7月20日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号