• vue.js/ES6 Promise


    Promise主要是为了解决异步请求。
    语法:new Promise((resolve,reject)=>{
    resolve();//成功 then()
    reject();//失败 catch()
    }).then(()=>{
    //成功后的处理
    }).catch(()=>{
    //失败后的处理
    });//resolve,reject 本身也是函数
    注:then和catch都可以接收参数
    无参数
    new Promise((resolve,reject)=>{
    //这里可以写逻辑
    resolve();//完成后调用 resolve,就会跑到then里面,可以有参数,会传到then里面
    }).then(()=>{
    //自己编写后续逻辑
    });

    有参数
    new Promise((resolve,reject)=>{
    //这里可以写逻辑
    var para = {name:'jay'};
    resolve(para);//完成后调用 resolve,para会传到then里面就是obj
    }).then((obj)=>{
    var name = obj.name;//这就是上面传的jay
    //自己编写后续逻辑
    });

    //不写catch,在then里面处理成功和失败
    new Promise((resolve,reject)=>{
    var para = {name:'jay'};
    resolve(para);
    reject('error message');
    }).then((obj)=>{
    var name = obj.name;
    },
    (error)=>{
    //error 就是 字符串 error message
    }
    );

    //分组处理
    new Promise((resolve,reject)=>{
    var para = {name:'jay'};
    resolve(para);
    }).then((obj)=>{
    var name = obj.name;
    return new Promise((resolve)=>{resolve(name+'xxxxxx');});//return Promise.resolve(name+'xxxxxx');//return Promise.reject('error message');//throw 'error from throw';
    }).then((obj)=>{
    var name = obj.name;//这个then里面处理的是上一个then里面return出来的结果
    }).catch((error)=>{
    //error 是 Promise.reject('error message');或者 throw 'error from throw'; 的结果
    });
    //分组处理 简写
    new Promise((resolve,reject)=>{
    var para = {name:'jay'};
    resolve(para);
    }).then((obj)=>{
    var name = obj.name;
    return name+'xxxxxx';
    }).then((obj)=>{
    var name = obj.name;//这个then里面处理的是上一个then里面return出来的结果
    });
    //Promise.all 等待所有请求结束后才调用then,then里面包含的是所有请求的结果集合。

    Promise.all([
            new Promise((resolve,reject)=>{resolve('1')}),
            new Promise((resolve,reject)=>{resolve('2')})
          ]).then((results)=>{
            console.log(results);//['1','2']
          });
  • 相关阅读:
    Convert、Parse、TryParse、(int)区别及可能引发性能问题
    重写、覆盖、重载、多态几个概念的区别分析
    计算机系统的硬件组成(转)
    如何选择Html.RenderPartial和Html.RenderAction
    位运算(转)
    Java程序员面试中的多线程问题
    请转到控制面板来配置或安装系统组件
    开篇
    DropDownList 不能有多个项被选定!
    有关rollup和cube的使用方法讨论
  • 原文地址:https://www.cnblogs.com/xsj1989/p/13963668.html
Copyright © 2020-2023  润新知