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会立即执行
     
  • 相关阅读:
    118/119. Pascal's Triangle/II
    160. Intersection of Two Linked Lists
    168. Excel Sheet Column Title
    167. Two Sum II
    172. Factorial Trailing Zeroes
    169. Majority Element
    189. Rotate Array
    202. Happy Number
    204. Count Primes
    MVC之Model元数据
  • 原文地址:https://www.cnblogs.com/tuziling/p/10220225.html
Copyright © 2011-2022 走看看