function testPromise() {
return new Promise((resolve, reject) => {
let a = 2
let b = 1
if (a > b) {
resolve(a)
} else {
reject(b)
}
})
}
function testPromise1() {
return new Promise((resolve, reject) => {
let a = 10
let b = 5
if (a > b) {
resolve(a)
} else {
reject(b)
}
})
}
// 用promise來順序執行多個異步函數
testPromise().then((resolve) => {
console.log(resolve)
return testPromise1();
}).then((res) => {
console.log(res, ‘this is promise‘);
}).catch((err) => {
console.log(err);
})
// 并发执行 异步函数 所有函数执行完再返回结果
let promise = testPromise();
let promise1 = testPromise1();
Promise.all([promise, promise1]).then((res) => {
console.log(res, ‘this is promiseAll‘);
})
// 竞速执行 res返回第一个执行完成的异步函数
Promise.race([promise, promise1]).then((res) => {
console.log(res, ‘this is promiseRace‘);
})
*** async await 是ES7的一个标准 为了解决多个promise的嵌套,让异步函数看起来像同步函数一样清晰,配合promise使用
注意 只有在async 函数里才可以使用await
// 用async await 來順序執行多個異步函數
async function testAsync() {
try {
let a = await testPromise();
let b = await testPromise1();
console.log(a, b, ‘this is async‘);
} catch (err) {
console.log(err)
}
}
testAsync();
awiat 后面等待的是一个promise函数,它会等到promise函数返回对应的状态再执行后面的代码