promise对象

為{幸葍}努か 提交于 2019-11-26 07:32:22

promise对象

  1. 概念:
    1. promise 是一个 构造函数 , 我们就可以通过 new Promise() 得到一个Promise的实例对象
    2. 在Promise 上, 有两个函数分别叫做 resolve(成功后执行的回调函数) 和 reject(失败后执行的回调函数)
    3. 在Promise 构造函数的 prototype 属性上, 有一个 .then() 方法, 只要是Promise 构造函数创建的实例, 都可以访问到这个 .then()方法
    4. Promise 表示一个 异步操作; 每当我们new 一个 Promise的实例 , 而这个实例,就表示一个具体的异步操作
    5. 既然Promise 创建的实例 是一个异步的操作, 那么只能有两种的返回结果:
      1. 状态1 : 异步执行成功了,需要在内部调用,成功的回调函数 resolve 把结果返回给 调用者;
      2. 状态2 : 异步执行失败了,需要在内部调用,失败的回调函数 reject 把结果返回给 调用者;
      3. 由于Promise 的实例 是一个异步的操作,内部拿到的 结果 无法使用 return 把操作的结果返回给调用者, 这时候只能使用回调函数的形式 来把 成功/或者失败的结果 返回给调用者
    6. 我们可以在new 出来的 Promise实例上 调用.then()方法, 【预先】为这个Promise异步操作 指定 成功(resolve) 和 失败(reject) 回调函数;

Promise 对象的使用

  1. // 注意 : 这里 new出来的 promise,只是代表【形式上】的一个 异步操作
    var  promise = new Promise(function (){
        //这个function 内部写的 就是具体的异步操作
    }) 
    
  2.  const fs = require('fs')
     //一个读取文件的异步操作
     // 每当 new 一个 Promise 实例对象的时候, 就会立即执行 异步操作中的代码
     var promise = new Promise (function (resolve,reject){
         fs.readFile('./文件的路径','utf-8', (err,dataStr) => {
             //if(err) throw err
             //console.log(dataStr)
             if(err) return reject(err)
             resolve(dataStr)
         })
     })
    
  //封装一个 异步读文件的函数
	  function getFileByPath(fpath){
	     return  new Promise (function (){
	       fs.readFile(fpath,'utf-8', (err,dataStr) => {
	           if(err) throw err
	           console.log(dataStr)
	      	 })
	   	})
	      
	  }	  
	  // 不调用 不执行 
	  //注意: 通过.then 指定的回调函数 成功的必须有,失败的可以省略不写
	   getFileByPath('需要读文件的路径')
	  	.then(function(data){
	      	console.log(data)
	      },function(err){
	          console.log(err.message)
	      })
  1. const fs = require('fs')
    
    //封装一个 异步读文件的函数
    function getFileByPath(fpath){
       return  new Promise (function (){
         fs.readFile(fpath,'utf-8', (err,dataStr) => {
             if(err) throw err
             console.log(dataStr)
        	 })
     	})
        
    }
    
     getFileByPath('需要读文件的路径1')
    	.then(function(data){
        	console.log(data)
         
         	return getFileByPath('需要读文件的路径2')
        })
    	.then(function(data){
         console.log(data)
         
         	return getFileByPath('需要读文件的路径3')
    	 })
    	.then(function(data){
         console.log(data)
     })
    //前面的执行失败 立即终止执行 所有的Promise的执行  并立即进入catch 去处理 Promise 中 错误的异常
    	.catch(function(err){
         console.log('这是失败的处理方式' + err.message)
     })
    
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!