React - 加载图片的队列,可以更改它

时间:2018-01-11 19:41:00

标签: reactjs queue loading

如何在React中创建加载图片的队列?事实上,对于React VR,但在大多数情况下,我认为它应该是相同的 - 一个更大的区别可能是我不能使用Webpack。对我来说重要的是我希望能够在加载过程中更改它。例如,我有5个非常大的图片,我们已经先加载了第二个,但是用户点击了图片编号4,所以应该开始加载这个图片而不是3个。

1 个答案:

答案 0 :(得分:1)

处理这种异步过程的一种方法是使用promises。

也许您有一系列链接可以从中加载图像

const imagesURLs = [ /* a list of URLs */ ]

然后,您可以执行异步切换图像的功能

function loadAllImagesStartingFrom(index, imagesURLS) {
     if (index >= imagesURLS.length) return;
     someImageRetrivingPromise(imagesURLS[index])
         .then(res => {
            /* do something with the image */
            loadAllImagesStartingFrom(index + 1, imagesURLS);
         });
} 

因此,如果要加载所有图像,可以调用

loadAllImagesStartingFrom(0, imagesURLs);

并且如果还没有加载图像则必须重新调用图像时才会独立调用someImageRetrivingPromise(您应该先进行检查)。

这种方法的唯一问题是,如果一个图像没有被加载并且你单独加载它然后它被加载到"队列"也是,所以会有一个双重调用,但你可以在loadAllImagesStartingFrom之前检查someImageRetrivingPromise如果图像已经加载alredy然后调用loadAllImages(index + 1, imagesURLS);而不是承诺。