zoukankan      html  css  js  c++  java
  • //……关于promise

    什么是promise?

    promise 翻译成中文的意思是 "承诺" ,一个承诺说出去了说明他是进行中的,承诺兑现了代表成功,没有兑现代表失败了。

    promise 对象的状态一旦发生改变,就不可逆

     

    promise有三个状态:

    pending  进行中

    resolved   成功  成功后执行 promise 的 then() 方法的第一个参数,第二个参数是指失败后执行的参数

    rejected   失败  失败后还可以执行 promise 的 catch() 方法的参数

     

    大白话:假期我承诺 “不打游戏” ,这个承诺就是 pending 状态。假期后没打游戏,就代表这个承诺成功了,就是 resolve 状态,可以给自己一个奖励,这个奖励用 then() 方法执行,反之就是失败了,就是 rejected 状态,给自己一个惩罚,这个惩罚就是 catch() 方法。

     

    promise 是一个用来解决异步问题的构造函数。

    解决定时器的异步,使定时器同步执行

    function fn(){
      var pro = new Promise( function(succ,failed){
        setTimeout( function(){
          console.log( 1 ); 
          succ();
        } , 1000)
      } )
      return pro;
    }
    var promise = fn(); promise.then( function(){   console.log( 2 ) } )

     解决 ajax 的异步,使其同步执行

    //ajax封装 使用promise对象
    function ajaxPromise(url){
    	var pro = new Promise(function(succ,failed){
    		var ajax = new XMLHttpRequest();
    		ajax.open( "get" , url );
    		ajax.send();
    		ajax.onreadystatechange = function(){
    			if( ajax.readyState == 4 && ajax.status == 200 ){
    				//成功了 ajax.responseText
    				succ(ajax.responseText);//通知promise对象ajax请求服务器的数据成功了
    			}
    		}
    		//承诺多久后如果没有通知promise对象成功  就通知失败
    		setTimeout( function(){
    			failed("请求服务器失败");
    		},5000 )
    	})
    	
    	return pro;
    }
    var pro = ajaxPromise("../data.json");
    pro.then( function(msg){
    	alert( msg );
    },function(msg){
    	alert( msg );
    } )
    

     

     

     

     

     

     

     

  • 相关阅读:
    软件设计师考试知识点总结
    HTML和CSS
    JavaScript核心知识点
    操作系统--页面置换算法(缺页数计算)
    中标麒麟系统远程桌面连接
    数据结构 图
    数据结构 二叉树
    MATLAB 大数据剔除坏值
    PTA 邻接表存储图的广度优先遍历(20 分)
    PTA 邻接矩阵存储图的深度优先遍历
  • 原文地址:https://www.cnblogs.com/jerome92/p/10315737.html
Copyright © 2011-2022 走看看