zoukankan      html  css  js  c++  java
  • 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会立即执行
     
  • 相关阅读:
    HDU4628+状态压缩DP
    Javascript 去掉字符串前后空格的五种方法
    Javascript 数组之判断取值和数组取值
    ASP.NET MVC 出现错误 “The view 'XXX' or its master was not found or no view engine support”
    ASP.NET MVC 页面调整并传递参数
    ASP.NET MV3 部署网站 报"Could not load file or assembly ' System.Web.Helpers “ 错的解决方法
    ASP.NET MVC 控制器向View传值的三种方法
    CSharp 如何通过拼接XML调用存储过程来查询数据
    SQLServer : EXEC和sp_executesql的区别
    关于SQLServer2005的学习笔记—异常捕获及处理
  • 原文地址:https://www.cnblogs.com/tuziling/p/10220225.html
Copyright © 2011-2022 走看看