• Promise简(resolve,reject,catch)


    一,什么是Promise?

    为了直观一点,首先我们采用console.dir(Promise)看一下它的结构组成。

     从上面的图片中我们可以到,Promise其实是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Promise.prototype上面的方法(then,catch),接下来我们试着使用一下Promise。

    二,Promise的使用

    首先我们来看一下Promise的使用语法:

    实例化对象时要传入一个函数

    new Promise(function(resolve,reject){}/*excutor*/);

    三,resolve和reject的具体用法

    首先我们来看看Promise的几种状态:

    • pending: 初始状态,成功或失败状态。
    • fulfilled: 意味着操作成功完成。
    • rejected: 意味着操作失败。

    1. resolve的用法

    当调用resolve方法时  ==>  Promise的状态就会变成fulfilled即成功的状态   ==>   就会执行.then里面的代码

    1. var p = new Promise(function (resolve, reject) {
    2. var timer = setTimeout(function () {
    3. console.log('执行操作1');
    4. resolve('这是数据1');
    5. }, 1000);
    6. });
    7. p.then(function (data) {
    8. console.log(data);
    9. console.log('这是成功操作');
    10. });

    输出结果: 

     2.  reject的用法(这个忽略想详细了解可以点击链接跳转,   起始这个没有太必要了解) 

    3. catch方法

     我们注意到除了then方法外,Promise原型上还有另外一个叫catch的方法,那么这个方法的作用是什么呢?其实跟then方法中的第二个参数一样,就是在Promise状态为rejected时执行,then方法捕捉到Promise的状态为rejected,就执行catch方法里面的操作,下面用catch方法改写上面reject用法里面的例子,如下所示

    1. var p = new Promise((resolve, reject) => {
    2. var flag = false;
    3. if(flag){
    4. resolve('这是数据1');
    5. }else{
    6. reject('这是数据2');
    7. }
    8. });
    9. p.then(data => {
    10. console.log(data);
    11. console.log('这是成功操作');
    12. }).catch(reason => {
    13. console.log(reason);
    14. console.log('这是失败的操作');
    15. });

    打印结果:

    总结: 调用resolve方法就执行.then里面的代码 

                调用reject方法就执行.catch里面的代码

  • 相关阅读:
    C++ STL - string 成员函数 + 模拟实现
    6235. 逐层排序二叉树所需的最少操作数目
    Vue 3编译器的新特性
    python发送阿里云短信教程
    【二叉树】最长同值路径
    基于 RocksDB 实现高可靠、低时延的 MQTT 数据持久化
    非标准化套利
    浅浅研究模板字符串 ` `
    淘宝运营方案
    [数据集][目标检测]裸土识别裸土未覆盖目标检测数据集VOC格式857张2类别
  • 原文地址:https://blog.csdn.net/qq_52421092/article/details/126656949