resources.load是只能异步吗?

游戏初始化的时候, 要读取一些配置文件和图集相关内容之后才能正常读取玩家的数据, 然后才能正常开始游戏.
但是使用之后感觉resources.load都是异步执行的, 请问怎么实现同步执行呢?
我想依次的按顺序读取文件和图集, 然后都准备好之后再执行下一步. 但不知道怎么写.
求助.

Promise

封装了下,感觉好别扭

export default class UtilRes {
    public static loadAsync<T extends typeof cc.Asset>(url: string, type: T): Promise<InstanceType<T>> {
        return new Promise<any>((resolve, reject) => {
            cc.loader.loadRes(url, type, (err: Error, res: any) => {
                if (!err) {
                    resolve(res);
                } else {
                    reject('UtilRes.loadSync url:' + url + ',err:' + err);
                }
            });
        });
    }
}
public static async asyncWrap<T, U = any>(promise: Promise<T>): Promise<[T | null, U | null]> {
        try {
            const data = await promise;
            const result: [T, null] = [data, null];
            return result;
        } catch (err) {
            const result_1: [null, U] = [null, err];
            return result_1;
        }
    }
public static async createActorNode(resUrl: string): Promise<cc.Node> {
        let [prefab, err] = await MiUtil.asyncWrap<cc.Prefab, string>(UtilRes.loadAsync(resUrl, cc.Prefab));
        if (err) {
            cc.error('MapUtil.createActor resUrl:' + resUrl + ',err:' + err);
            return null;
        }
        const node = cc.instantiate(prefab);
        return node;
    }
1赞

因为JS/TS的历史运行环境导致这样的,一般都是两种异步编程风格:老派callbacks,新派promise搭配await. 只能习惯这些…
$HX53L)@%$UJKT)Z0B3XM
分享一些知识:
为什么Javascript单线程却支持异步执行? - 知乎 (zhihu.com)
异步JavaScript简介 - 学习 Web 开发 | MDN (mozilla.org)