You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制显示SciChart.js加载动画直至数据全部获取完成?

SciChart.js 数据加载期间显示加载动画的实现方案

方法一:使用SciChart内置的LoadingOverlay(推荐)

SciChart.js自带加载覆盖层组件,无需额外DOM操作,直接调用API即可控制显示/隐藏:

  1. 初始化图表时显示加载动画
    创建SciChart实例后,立即启用加载覆盖层:
// 初始化SciChart Surface
const { sciChartSurface, wasmContext } = await SciChartSurface.create("scichart-root");
// 显示内置加载层,可自定义提示文本
sciChartSurface.loadingOverlay.show("数据加载中,请稍候...");
  1. 等待所有API数据完成后更新图表并隐藏动画
    用Promise.all处理多API请求,确保所有数据返回后再渲染图表,最后隐藏加载层:
// 定义多个API请求
const fetchDatasetA = fetch("/api/get-dataset-a").then(res => res.json());
const fetchDatasetB = fetch("/api/get-dataset-b").then(res => res.json());

try {
    // 等待所有请求完成
    const [datasetA, datasetB] = await Promise.all([fetchDatasetA, fetchDatasetB]);

    // 将数据添加到SciChart(示例:创建折线图系列)
    const seriesA = new FastLineRenderableSeries(wasmContext, {
        dataSeries: new XyDataSeries(wasmContext, {
            xValues: datasetA.x,
            yValues: datasetA.y
        })
    });
    const seriesB = new FastLineRenderableSeries(wasmContext, {
        dataSeries: new XyDataSeries(wasmContext, {
            xValues: datasetB.x,
            yValues: datasetB.y
        })
    });
    sciChartSurface.renderableSeries.add(seriesA, seriesB);

    // 隐藏加载覆盖层
    sciChartSurface.loadingOverlay.hide();
} catch (err) {
    console.error("数据加载失败:", err);
    // 出错时也需隐藏加载层,可替换为错误提示
    sciChartSurface.loadingOverlay.show("数据加载失败,请重试");
    setTimeout(() => sciChartSurface.loadingOverlay.hide(), 3000);
}

方法二:自定义加载动画(灵活度更高)

如果内置样式不符合需求,可以手动创建DOM加载层,覆盖在SciChart容器上:

  1. 添加自定义加载层DOM
<div id="scichart-root" style="position: relative; width: 100%; height: 600px;">
    <!-- 自定义加载层 -->
    <div id="custom-loader" style="
        position: absolute;
        top: 0; left: 0;
        width: 100%; height: 100%;
        background-color: rgba(255, 255, 255, 0.9);
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 999;
        font-size: 16px;
    ">
        <div>正在加载数据...</div>
    </div>
</div>
  1. 控制加载层显示/隐藏
// 初始化图表(此时加载层默认显示)
const { sciChartSurface, wasmContext } = await SciChartSurface.create("scichart-root");

// 等待API数据
const [datasetA, datasetB] = await Promise.all([fetchDatasetA, fetchDatasetB]);

// 更新图表数据...
sciChartSurface.renderableSeries.add(seriesA, seriesB);

// 隐藏自定义加载层
document.getElementById("custom-loader").style.display = "none";

关键注意点

  • 务必在所有API请求完成后再隐藏加载动画,避免数据未加载完就显示空图表。
  • 处理异常场景:API请求失败时也要隐藏加载层,防止加载动画一直挂着。

内容的提问来源于stack exchange,提问作者Ionica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:43:14