await不可以单独使用
function requestData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(222)
}, 2000);
})
}
function foo() {
const res1 = await requestData()
console.log("后面的代码1", res1)
console.log("后面的代码2")
const res2 = await requestData()
console.log("res2后面的代码", res2)
}
foo()
// 打印
// SyntaxError: await is only valid in async function
// 等待仅在异步函数中有效
async和await一起使用
await后面是Promise对象
// 1.await表达式
function requestData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(222)
}, 2000);
})
}
async function foo() {
const res1 = await requestData()
console.log("后面的代码1", res1) // 后面的代码1 222
console.log("后面的代码2") // 会在await返回值后执行 后面的代码2
const res2 = await requestData()
console.log("res2后面的代码", res2) // res2后面的代码 222
}
foo()
// 打印
// 后面的代码1 222
// 后面的代码2
// res2后面的代码 222
// 2.跟上其他的值
async function foo() {
// const res1 = await 123
// const res1 = await {
// then: function(resolve, reject) {
// resolve("abc")
// }
// }
const res1 = await new Promise((resolve) => {
resolve("why")
})
console.log("res1:", res1) //res1: why
}
foo()
捕获异常
// 3.reject值
// 1.await更上表达式
function requestData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(222)
}, 2000);
})
}
async function foo() {
const res1 = await requestData()
console.log("res1:", res1)
}
foo().catch(err => {
console.log("err:", err) //这里捕获异常 err: 222
})