• Promise


    
    

    (1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。

    
    

    (2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。



    <!
    DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="./jquery-3.1.0.js"></script> </head> <body> <script> let p = new Promise(function(resolve,reject){ $.ajax({ url:"data/arr.txt", dataType:"json", success(arr){ resolve(arr) },error(err){ reject(err) } }) }); let p2 = new Promise(function(resolve,reject){ $.ajax({ url:"data/json.txt", dataType:"json", success(arr){ resolve(arr) },error(err){ reject(err) } }) }); Promise.all([ p,p2 ]).then(function(val){ //结构赋值 let [arr1,arr2]=val; console.log(arr1) console.log(arr2) }) </script> </body> </html>

    // new 做了什么
    //1.创建一个新的空对象
    //2.将构造函数中的this指向这个新空对象
    //3.执行构造函数中的代码
    //4.返回这个对象
    //5.这个对象有一个__proto__指向构造函数原型
    var promise= new Promise((resolve, reject) => {
    var flag=1;
    if(flag) return resolve()
    reject()
    });
    promise.then((res)=>{
    var a = "成功回调"
    console.log(a)
    },(err)=>{
    var b = "失败回调"
    console.log(b)
    })
    // ---------------------------------
    function promiseTest(){
    var promise= new Promise((resolve,reject)=>{
    var flag=true;
    if(flag) return resolve()
    reject()
    });
    return promise
    };
    promiseTest().then((res)=>{
    var a = "成功回调"
    console.log(a)
    },(err)=>{
    var b ="失败回调"
    console.log(b)
    })
    //---------------------------
    ## Promise
    1.Promise是一个构造函数
    + 需要new Promise去创建一个Promise对象
    + 在new Promise(函数) 这个函数有2个参数一个是resolve(成功的回调)
    一个是reject(失败的回调)
    2.promise对象上有then()同时还有一个叫 catch方法
    + then接受2参数一个是成功的回调一个是失败的回调
    +在then接受中的分别传递成功和失败回调函数给resolve和reject
    3.为什么要使用Promise
    +解决嵌套地狱问题
    4.Promise会立即执行
     
  • 相关阅读:
    Linux Shell脚本Ldd命令原理及使用方法
    没有判断好形势,哪怕再多的传感器说有问题,核心的那个几仪表就是在歌舞升平
    JVM
    leetcode第一刷_Count and Say
    html 前台通用表单
    BP神经网络算法学习
    flash的dragonbone插件导入cocos2d的注意事项
    445port入侵具体解释
    google域名邮箱申请 gmail域名邮箱申请(企业应用套件)指南
    SQL性能优化工具TKPROF
  • 原文地址:https://www.cnblogs.com/tuziling/p/10220225.html
Copyright © 2020-2023  润新知