async await / Promise / try catch 异步执行

822 阅读1分钟
let say = ()=>{
    return new Promise(function (resolve, reject) {
        setTimeout(() => {
            let obj = {a:`杰克`,b:`boy`,c:`是个前端`}
            resolve(JSON.stringify(obj))
        }, 3000);
    })
}
async function test() {
    try {
        let data = await say()
        // await 命令只能用在 async 函数之中
        console.log("-------await 会等到say的返回结果才去执行之后的程序代码--------")
        // data接收到的则是上面的obj
        data = JSON.parse(data)
        console.log(data.a,data.b,data.c)
    } catch(err) {
        console.log(err)// 若是say函数中执行的是reject函数,此处则抛出错误
    }
}
test()
console.log("此处程序并不等待上面结果再执行")
let say = ()=>{
    return new Promise(function (resolve, reject) {
        setTimeout(() => {
            let obj = {a:`杰克`,b:`boy`,c:`是个前端`}
            resolve(JSON.stringify(obj))
        }, 3000);
    })
}
async function test() {
    try {
        let data = await say().then((res)=>{
            支持链式操作,可以只then()下去,需要把结果return返回出去,跟上面的写法有不同之处
            console.log(res)
            return res 
        })
        console.log("等上面执行完了在执行")
    } catch(err) {
        console.log(err)
    }
}
test()
console.log("执行")