这是Use of futures for async loading的后续内容
我的 WebGL/Dart 程序在初始化时需要创建大量的 opengl 数据。这一切都是异步加载的,并在加载时使用期货来处理数据,并知道何时加载了所有必需的数据。
我在加载纹理时遇到了麻烦。我有这个代码 -
ImageElement img = new ImageElement();
img.onLoad.listen((e) {
baseTexture = gl.createTexture();
gl.bindTexture(TEXTURE_2D, baseTexture);
gl.texImage2DImage(TEXTURE_2D, 0, RGBA, RGBA, UNSIGNED_BYTE, img);
gl.texParameteri(TEXTURE_2D, TEXTURE_MIN_FILTER, LINEAR);
gl.texParameteri(TEXTURE_2D, TEXTURE_MAG_FILTER, LINEAR);
});
img.src = "base.png";
这工作正常。它加载图像并在图像到达时从中制作纹理。但是我需要我的主程序知道我的所有纹理何时到达。基于上一个问题,我应该为每个人使用一个未来,并使用 Future.wait 等待他们都准备好。
但是,如上所述加载图像不使用期货,它使用 StreamSubscription 所以我没有从这个函数中得到等待的未来。
我怎样才能得到一个让我知道我的纹理何时是创建者的未来对象?我可以创建自己的 Future 对象并在回调中“发出信号”吗?如果我能做到这一点,从文档中我根本不清楚我是如何做到的。