• ES6-promise


    1.异步请求/异步操作

    异步:操作之间没有关系,干扰,可以同时进行多个操作;代码更复杂

    同步:同时只能做一件事;代码简单

    2.promise——消除异步操作:用同步一样的方式,来书写异步代码

    (1)promise本身是一个构造函数,有all,reject,resolve等方法

        promise.all

        promise.race(race的用法与all一样,只是all是与的关系,必须每一个资源都成功,但race是或的关系,同时读取多个资源哪个先完成就用哪个,只要有一个成功的就可以)

    (2)基本大框:

        jq下的promise:promsie.all( [ $.ajax(),$.ajax() ] ).then( results=>{//对了},err=>{//错了} )

     1 Promise.all({
     2    $.ajax({url:'data/arr.txt',dataType:'json'}), 
     3    $.ajax({url:'data/json.txt',dataType:'json'}), 
     4    $.ajax({url:'data/num.txt',dataType:'json'}), 
     5 }).then(results=>{
     6    let[arr.json,num]=result;
     7    alert('成功了');
     8    console.log(arr,json,num);   
     9 },err=>{
    10    alert('失败了'); 
    11 })
     1 function createPromise(url){//我们用promise的时候一般把它包在一个函数中,在需要的时候去运行这个函数。
     2     return new Promise(function(resolve,reject){//我们包装好的函数最后会return出promise对象,也就是说执行这个函数我们会得到一个promise对象//两个参数(回调函数):resolve-异步操作成功,reject-异步操作失败。严格来说resolve是将promise的状态设置为fullfiled,reject是将promise的状态设置为rejected。
     3         $.ajax({
     4             url,//url:url,在json中key与value值一样时可省略
     5             dataType:'json',
     6             sucess(arr){
     7               resolve(arr);
     8           },
     9           error(err){
    10               reject(err);
    11           }
    12       })
    13   });
    14 }
    15 promise.all([//把都要执行的函数都放在一个数组里,然后数组以同步的方式一个一个执行,执行结束后能够接着执行then里面的东西
    16     createPromise('data/arr.txt'),
    17     createPromise('data/json.txt')
    18 ]).then(function(arr){//then会拿到我们之前函数中调用resolve时传的参数
    19     let [res1,res2]=arr;//结构赋值
    20     alert('全部成功了');
    21     alert(res1);
    22     alert(res2);
    23 },function(){
    24     alert('至少有一个失败了');
  • 相关阅读:
    聊天工具分享bug
    Git命令查看代码提交次数
    短链接生成实例
    .Net MVC用户注册验证码
    js写验证码
    笔记
    jq获取数组中的某个字段拆分成字符串。
    IIS部署后中文Cookie乱码
    C#反射(Reflection)与特性(Attribute)实例
    jmm
  • 原文地址:https://www.cnblogs.com/czh64/p/11943430.html
Copyright © 2020-2023  润新知