Cc.loader.loadRes 资源加载能否同步加载?

本地就真的不要时间了 ?或许吧 至少异步加载没问题
只是看怎么 让代码更方便
写一个 比较公用的类 或者 方法啥的可以考虑

可以参考node代码,异步方法都会同时提供一个同步方法。

异步加载的确写起来不太友好,比如我写一个逻辑,本来同步的话,先判断这个预制资源是否加载了,没加载的话,我从资源里加载一下,有的话就直接赋值数据, 问题来了,如果是异步的,我一个方法写起来就得 if else 里写两段相同的代码,不好看,就得再搞个方法,等异步加载之后调用. 大家可能都是把预制资源关联到节点上,不需要这么搞,但是如果我懒加载预制资源,把预制资源放到 resorce里的话 就经常会遇到这个问题. 再者就是异步加载需要上层自己加逻辑,不然异步加载可能会逻辑问题,造成一些不想看到的bug

1赞

我有这样一个问题 webSocket 建立连接 拿到数据需要驱使view去更新 这个万恶的异步 让我无法确定当我收到网络回调时 我是否已经初始化好view 如果服务器先后来了两条消息 一条创建一个view 一条对这个view做更新 有可能第二条消息来时 view还未初始化好

如果能像白鹭一样 有个资源加载组就好了 一方面我可以预加载资源组 另一方面使用的时候同步创建 可以保证我收到第二条消息的时候 view已经初始化完成

@446413497
网络消息更新的是客户端数据, 视图异步加载资源后, 把数据更新到显示, 并且监听数据的变化事件.
网络消息再次更新本地数据, 数据发出变化事件, 视图更新显示.
这不是基本的MVC么?
IO一般都推荐使用多线程异步的, 不然会卡UI线程的.

怎么说呢 总之已经放弃使用异步了 目前使用的是loadResdir加getRes的方式 基本实现了分模块和同步加载 哎,我们的框架就是这种基本的mvc。。 就不能加载资源异步 UI线程同步么 学学别人egret
每次写一个精灵 然后做个移动要到回调里面去写 别人要依赖一下他嘛 还要判断是否存在 是否已经初始化成功 感觉非常不好用 难道是我打开姿势不对?

关键是 我加载了一次 再加载还是异步的

都是这样的

你可以加载完成这后,用一个变量保存资源的引用,下次用的时候就不用重新加载了

cocos不是已经实现了ES6的 async await吗。这不就等于同步加载了么

同感,连个同步接口都没有,回调里回调回调回调,我要吐血了

可以用 ts,ts 支持 async/await 哟~ 配合 promisify,这样就能用同步的写法了。

這比用同步寫法還詭異。

说得好像系统底层能同步加载资源一样……

1赞

可以用 ts 的 anync await 现在就在用 去调 回调 刚觉代码看起来爽多了

是能仿写实现,但好多地方,我要使用同步效果更好,比如一些背景图,我用代码实现加载的话,同步的不会闪一下,异步可能会隔300ms出现的话,也会闪一下,墙裂要求加入啊,原来的addTexture接口不是挺好的嘛,为什么要去掉啊

自己 封装 一下不就好了吗

@84579712

let res = cc.loader.getRes(url)

你说的是这个方法么?
加载资源到内存只能是异步的, 获取资源的引用是同步的, 你可以选择先加载资源, 再显示内容.

这个异步的图片赋值,让我在同一帧执行2次图片赋值,就没有了先后顺序了

这个怎么写 不太会