复习Promise
async是什么?
- async和Promise有关
- 可以让异步函数更像同步函数
async function是声明这个函数是异步函数,function是声明这个函数是同步函数。
所有async函数都会返回一个Promise
由此可见,async和await都是promise的语法糖。
await 和 async 的用法
await只能放在async函数里await后边要接一个会return new promise的函数
为什么要await?让异步代码promise看起来更像同步代码(人性)。
二者本质上是相同的,只是写法不同。promise的代码写起来更抽象,await代码复杂但是阅读理解不费脑筋。
可是我如果想同时玩两个筛子呢?这时候就体现了await的局限性,他只能接受一个promise
用promise实现同时玩两个筛子
Promise.all([猜大小('大'), 猜大小('大')])
.then((x)=>{console.log(x), (y)=>console.log(y)})
补充:
Promise.all两个都成功才算成功,Promise.race两个只要有一个成功就算成功
function 猜大小(猜测) {
return new Promise((resolve, reject) => {
// 背下来
console.log("开始摇色子");
setTimeout(() => {
let n = 6; //parseInt(Math.random() * 6 + 1, 10); // 1~6
if (n > 3) {
if (猜测 === "大") {
resolve(n);
} else {
reject(n);
}
} else {
if (猜测 === "小") {
resolve(n);
} else {
reject(n);
}
}
}, 1000);
});
}
async function test() {
try {
let n /*[6,6]*/ = await Promise.all([猜大小("大"), 猜大小("大")]);
console.log("好嗨哦" + n);
} catch (error) {
console.log("输光了" + error);
}
}
var result = test();
console.log(result);
网友评论