ES6 Promise

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

注意:这里new出来的promise只是代表【形式上】的一个异步操作;
什么是形式上的异步操作:就是说我们只知道它是一个异步操作,但是做什么具体的异步事情,目前还不清楚。

var promise = new Promise()

这是一个具体的异步操作:其中使用function指定一个具体的异步操作

var promise = new Promise(function(){
	//这个function内部写的就是具体的异步操作
})

实例:读取文件的操作
files文件夹中有三个txt文件:1.txt(内容随便写:111)、2.txt(222)、3.txt(333)
以下代码是在xxx.js中

const fs=require('fs')
//每当new一个Promise实例的时候,就会立即执行这个异步操作中的代码
//也就是说,new的时候除了能够得到一个promise实例之外,还会立即调用我们为Promise构造函数传递那个function,执行这个function中的异步操作代码
var promise=new Promise(function(){
	fs.readFile('./file/2.txt','utf-8',(err,dataStr)=>{
		if(err) throw err
		console.log(dataStr)   //终端返回结果222
	})
})

在终端中运行xxx.js :node ./xxx.js

改进代码1:

function getFileByPath(fpath) {
    var promise = new Promise(function() {
        fs.readFile(fpath, 'utf-8', (err, dataStr) => {
            if (err) throw err
            console.log(dataStr) //终端返回结果222
        })
    })
}

getFileByPath('./file/2.txt')

异步:操作之间没有联系,同时进行多个操作;代码更复杂
同步:同时只能做一件事;代码简单。

使用Promise的好处:使用Promise解决回调地狱问题(resolve、reject、.then),即消除异步操作(相当于用同步一样的方式,来书写异步代码)。

Promise的用法:
①Promise.all([ . a j a x ( ) , .ajax(), .ajax(),.ajax(),$.ajax()]).then(success=>{},err=>{})
all一个个的,一个都不能少,与的关系

  /* let p1 = new Promise(function(resolve, reject) {
	// 异步代码
	// resolve成功了,reject失败了
	$.ajax({
	//arr.txt的内容:[98,7,4,86,5,16,7,4,9,85,46]
		url: 'arr.txt',
		dataType: 'json',
		success(arr) {
				resolve(arr)
		},
		error(err) {
				reject(arr)
		}
	})
})
let p2 = new Promise(function(resolve, reject) {
	$.ajax({
	//json.txt的内容:{"a":1,"b":"hr226","c":3}
		url: 'json.txt',
		dataType: 'json',
		success(arr) {
			resolve(arr)
		},
		error(err) {
			reject(arr)
		}
	})
}) */

  /* function createPromise(url) {
      return new Promise(function(resolve, reject) {
          // 注意:$.ajax返回的对象其实就是一个Promise
          $.ajax({
              // url: url,
              url,
              dataType: 'json',
              success(arr) {
                  resolve(arr)
              },
              error(err) {
                  reject(arr)
              }
          })
      })
  } */

  /* p1.then(function(arr) {
  		alert('ok' + arr)
  }, function(err) {
  		alert('no' + err)
  }) */

  Promise.all([
      // p1, p2
      /* createPromise('arr.txt'), 
      createPromise('json.txt') */
      $.ajax({
          url: 'arr.txt',
          dataType: 'json'
      }),
      $.ajax({
          url: 'json.txt',
          dataType: 'json'
      }),
  ]).then(arr => {
      let [res1, res2] = arr;
      console.log(res1, res2)
  }, err => {
      alert('all no' + err)
  })
	  /* .then(function(arr) {
			// 解构赋值
			let [res1, res2] = arr;
			
			// alert('all ok');
			// alert(res1);
			// alert(JSON.stringify(res2))
			console.log(res1, res2)
			}, function(err) {
			alert('all no'+err)
		}) */

②Promise.race先来先服务、竞速

标题基于SpringBoot的马术俱乐部管理系统设计与实现AI更换标题第1章引言介绍马术俱乐部管理系统的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义阐述马术俱乐部管理系统对提升俱乐部管理效率的重要性。1.2国内外研究现状分析国内外马术俱乐部管理系统的发展现状及存在的问题。1.3研究方法以及创新点概述本文采用的研究方法,包括SpringBoot框架的应用,以及系统的创新点。第2章相关理论总结和评述与马术俱乐部管理系统相关的现有理论。2.1SpringBoot框架理论介绍SpringBoot框架的基本原理、特点及其在Web开发中的应用。2.2数据库设计理论阐述数据库设计的基本原则、方法以及在管理系统中的应用。2.3马术俱乐部管理理论概述马术俱乐部管理的基本理论,包括会员管理、课程安排等。第3章系统设计详细描述马术俱乐部管理系统的设计方案,包括架构设计、功能模块设计等。3.1系统架构设计给出系统的整体架构,包括前端、后端和数据库的交互方式。3.2功能模块设计详细介绍系统的各个功能模块,如会员管理、课程管理、预约管理等。3.3数据库设计阐述数据库的设计方案,包括表结构、字段设计以及数据关系。第4章系统实现介绍马术俱乐部管理系统的实现过程,包括开发环境、编码实现等。4.1开发环境搭建介绍系统开发所需的环境,包括操作系统、开发工具等。4.2编码实现详细介绍系统各个功能模块的编码实现过程。4.3系统测试与调试阐述系统的测试方法、测试用例以及调试过程。第5章系统应用与分析呈现马术俱乐部管理系统的应用效果,并进行性能分析。5.1系统应用情况介绍系统在马术俱乐部中的实际应用情况。5.2系统性能分析从响应时间、并发处理能力等方面对系统性能进行分析。5.3用户反馈与改进收集用户反馈,提出系统改进建议。第6章结论与展望总结马术俱乐部管理系统的设计与实现成果,并展望未来的研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值