我们所常见的异步编程:
1.上传文件
2.http请求
3.解析文件
定义:Promise是js异步编程的新的解决方案
具体来说:1.从语法上说,Promise是一个构造函数
2.从功能上说,Promise是对象用来封装一个异步操作并可以获取其结果
它的状态(三种):pading,resolved,rejected
它的状态初始是pading,当他的 状态发生并确认后,状态将不能发生改变
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<script>
//使用Promise的步骤:
// 1.定义一个Promise构造对象,并传入一个回调函数
// 2.回调函数定义两个参数,用来修改状态并且获取结果值
// 3.Promise通过两种方法来获取其结果值:then 和 catch
// 4.Promise还有all方法,用来检测异步操作是不是全部完成,完成时执行其方法
// 5.Promise 还有 race用来监听一个异步编程是否在一定时间内完成,否则直接运行其他的异步编程
let p =new Promise((relove,reject)=>{
setTimeout(()=>{
relove("成功的回调123")//状态改为成功reloved
reject("失败的回调")//状态改为失败rejected
},2000)
});
p.then((value)=>{
console.log(value);//获取成功的回调的值
},(reson)=>{
console.error(reson);//获取失败的回调的值
})
let p1 =new Promise((relove,reject)=>{
setTimeout(()=>{
relove("成功的回调")//状态改为成功reloved
reject("失败的回调")//状态改为失败rejected
},2000)
});
p1.then((value)=>{
console.log(value);//获取成功的回调的值
},(reson)=>{
console.error(reson);//获取失败的回调的值
})
//监听全部的Promise是不是全部获取到了值,返回他们结果值集合
const all = Promise.all([p,p1]);
all.then((value)=>{
console.log(value);
},(reson)=>{
console.log(reson);
})
// 监听异步编程集合中的前面的编程是否在第二个编程执行完,如果执行完了,将返回第一个结果值,否则反之
const race = Promise.race([p1,p]);
race.then((value)=>{
console.log('1',value);
}).catch((reson)=>{
console.error(reson);
})
script>
body>
html>