JS/TS中async与await使用

介绍

  • async:

async 是“异步”的简写,带async关键字的函数,是声明异步函数,返回值是promise对象,如果async关键字函数返回的不是promise,会自动用Promise.resolve()包装。

  • await:

await 可以认为是 async wait 的简写。所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。

如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。

如果它等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。

例如在creator中动态加载预制体

/**
 * 获取prefab
 * @param path 路径
 * @returns 
 */
public static async loadPrefabRes (path: string) {
    return new Promise((resolve, reject)=>{
        this.loadRes(`prefab/${path}`, cc.Prefab, (err: any, prefab: cc.Prefab)=>{
            if (err) {
                console.error('Prefab load failed', path);
                reject && reject();
                return;
            } 

            resolve && resolve(prefab);
        })
    })
}
  • await调用方法
let prefab = await resourceUtil.loadPrefabRes(className) as cc.Prefab;

点赞(3)

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

返回
顶部