<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
/*
*1.无阻塞高并发,是nodeJS的招牌,要达到无阻塞高并发必须有基本保障
* 查找数据从数据库,20000条数据,
* 1.1 PHP:第一任务查找数据,后面有了新任务,那么后面的任务会被挂起排队;
*
* 1.2 NodeJS :是把第一个任务挂起来交给数据库跑,然后去接待第二个任务
* 给对应的系统组件去处理挂起排队,接着去接待第三个任务,
*
* 2.promise两个参数的作用
* 2.1 resolve的作用:将promise对象的状态从“未完成”变为成功,在异步
* 操作成功时调用,并将异步操作结果,作为参数传递出去
* 2.2 reject的作用:将promise对象的状态从“未完成”变为失败,在异步
* 操作失败时调用,并将异步操作报错结果,作为参数传递出去
*
* 3.promise的三种状态
* 3.1 :pending 等待
* 3.2 :fulfilled 成功
* 3.3 :rejected 失败
* 当promise 状态发生改变,就会触发then()里面的响应函数处理后续步骤:
* promise状态一经改变,不会再变
*
* 最终状态结果只有两种可能:
* pending 等待 ->fulfilled 成功
* pending 等待 ->rejected 失败
*/
//开始做饭
function cook() {
console.log("开始做饭");
let p =new Promise((resolve, reject) => {
setTimeout(()=>{
console.log("做饭完毕");
resolve("鸡蛋炒饭");
},1000)
});
return p;
}
//开始吃饭
function eat(data) {
console.log("开始吃饭"+data);
let p = new Promise( resolve => {
setTimeout(()=>{
console.log(data+",吃完了");
resolve('一双筷子一个碗')
},2000)
})
return p;
}
//开始刷碗
function wash(data) {
console.log("开始刷完:"+data);
let p= new Promise(resolve => {
setTimeout(()=>{
console.log(data+",洗完了");
resolve("干净的碗筷!")
},2000);
})
return p;
}
// 调用方式1
// cook()
// .then((data)=>{
// return eat(data)
// })
// .then((data)=>{
// return wash(data);
// })
// .then((data)=>{
// console.log(data);
// })
// 调用方式2
cook()
.then(eat)
.then(wash)
.then((data)=>{
console.log(data);
})
</script>
</body>
</html>
网友评论