ES6: promise对象与回调地狱

一、回调地狱

在js中大量使用回调函数进行异步操作,而异步操作什么时候返回结果是不可控的,所以希望一段程序按我们制定的顺序执行就需要在异步的回调函数中进行嵌套。

二、Promise概述

为了解决回调地狱,ES6提供了一个新的API----Promise。Promise能够将回调函数嵌套改为then方法的链式操作,从而提高代码的可读性和可维护性。

1、Promise是一个构造函数,可以new一个对象。
2、Promise本身不是异步的,只是在回调函数中经常执行异步操作。
3、Promise,会创建一个容器,在该容器中自动执行一个异步操作。
该异步操作程序会产能生两种结果:成功(resolved)或者失败(rejected)。
在这里插入图片描述
4.Promise基本使用方法;
promise是一个构造函数,可以new一个对象;
promise构造函数中需要传一个函数,我们可以将异步代码放在该函数中;
promise本身不是异步的,但是内部通常执行的是异步代码。

三、Promise的组成

在这里插入图片描述

四、用函数封装Promise读取文件操作

重点:将实例化好的Promise对象return

const fs = require('fs');
function readFile (filePath){
	let P= new Promise(function(resolve,reject){
		fs.resdFile(filePath,'utf-8',(err,data)=>{
			if(err){
		//失败的回调函数能够被then方法的参数2接收到;
				return reject(err);
			}
		//成功的回调函数能够被then方法的参数2接收到;
			resolve(data);
		})
	})
	//将new出来的方法Promise对象返回
	return P;
}

链式调用:return出去一个promise对象,能接着.then

readFile('../async/1.txt').then(function (data1){
	console.log(data1);
	return readFile('../async/2.txt');
}).then(function(data2){
	console.log(data2);
	return resdFile('../async/3.txt');
}).then(funciotn(data3){
	console.log(data3);
})

相关推荐

  1. es6对于Promise 对象的详解(2024-04-11)

    2024-04-14 06:26:04       21 阅读
  2. ES6中的promise对象及其应用

    2024-04-14 06:26:04       27 阅读
  3. ES6Promise 使用

    2024-04-14 06:26:04       21 阅读
  4. js中将地狱改装成promise方式的函数

    2024-04-14 06:26:04       36 阅读
  5. 地狱Axios

    2024-04-14 06:26:04       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 06:26:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 06:26:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 06:26:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 06:26:04       18 阅读

热门阅读

  1. js - es6 - 扩展运算符用法

    2024-04-14 06:26:04       16 阅读
  2. uniapp实现事件级防抖

    2024-04-14 06:26:04       16 阅读
  3. 单链表C语言实现

    2024-04-14 06:26:04       22 阅读
  4. mamba 模型对 gpgpu 体系结构提出的新挑战

    2024-04-14 06:26:04       35 阅读
  5. LogMiner redo log

    2024-04-14 06:26:04       23 阅读
  6. apache-zookeeper-3.8.1单机安装

    2024-04-14 06:26:04       20 阅读
  7. Nginx set content type

    2024-04-14 06:26:04       19 阅读
  8. Debian安装和基本使用

    2024-04-14 06:26:04       14 阅读
  9. C#面:介绍 ArrayList 与 Array 的区别

    2024-04-14 06:26:04       15 阅读
  10. 委托 lambda linq之间的演变过程

    2024-04-14 06:26:04       12 阅读