Open goldEli opened 4 years ago
// 1.返回一个promise实例对象
let promise = async () => {
return "success!"
};
// 2.调用then方法接收响应信息 / catch方法捕获then方法的异常信息
promise().then(function(successMsg){
console.log("响应状态为resolve,将响应返回给下一个then方法调用")
return successMsg
}).then(function(msg){
console.log("接收到的响应信息=", msg);
}).catch(function(error){
console.log("捕获前两个then方法的失败信息=", error)
})
await关键字用于等待一个Promise对象,只在异步函数体内部生效。当async函数执行时,遇到await就会暂停执行,等到该式子的异步操作完成后,才会继续往下执行。从而将异步操作转为同步操作,作用类似于java中的同步锁
// 返回一个Promise对象
function timeDelay(){
return new Promise((resolve) => {
setTimeout(function () {
console.log("定时器执行中。。。")
resolve();
}, 1000)
})
}
// 1.async 和 await 组合使用
let promise = async () => {
// 等待一个Promise对象
await timeDelay();
console.log("定时器执行后。。。")
return "success!";
};
// 2.调用then方法接收响应信息 / catch方法捕获then方法的异常信息
promise().then(function(successMsg){
console.log("响应状态为resolve,将响应返回给下一个then方法调用")
return successMsg
}).then(function(msg){
console.log("接收到的响应信息=", msg);
}).catch(function(error){
console.log("捕获前两个then方法的失败信息=", error)
})
Async建立在Promise之上,用于定义一个异步函数,async函数会隐式地返回一个promise,该promise的reosolve值就是函数return的值。 await用于一个异步操作之前,表示要“等待”这个异步操作的返回值。await也可以用于一个同步的值。它必须在async函数块里,不能单独使用
function rand() {
return new Promise((resolve,reject) =>{
let num = parseInt(Math.random()*10)
setTimeout(()=>{
resolve (num)
},1000)
})
}
async function test(){
let n = await rand()
console.log(n)
}
test()