javascript - 如何适应 EmberJS 中加载缓慢的 highcharts?

标签 javascript ember.js highcharts

我有一个 EmberJS 路线,根据各种选项,将 1-20 个 HighCharts 加载到单个模板中。我目前正在使用 Ember.RSVP.hash 以及每个图表的 AJAX 加载 promise 。我的路线或多或少看起来像:

model: function () {
    var promises = {};
    // forEach chart I wish to create (one promise per chart):
        promises[chartId] = Ember.$.getJSON(urlForChart).then(function (response) {
            // do some post-processing here
        });
    return Ember.RSVP.hash(promises);
}

这里的问题是,AJAX 调用可能需要一段时间,特别是如果有很多图表,并且 Ember.RSVP.hash 在渲染之前等待所有 promise 完成,所以我一直在看我的 loading.hbs 模板可能会持续一段时间。

那么是否可以重组我的路线/应用程序,以便每个图表都将在完成时呈现,而不是等待所有 promise 在渲染之前完成?这可能吗?

或者最初渲染所有没有数据的 HighCharts,然后单独获取每个数据源(基本上是延迟加载)会更好吗?如果是这样,我将如何在 HighCharts/EmberJS 中实现这一点?

顺便说一句,我正在使用 Ember 1.13.11ember-cli-highcharts(如果有的话)。

最佳答案

您可以将 Promise 移至 setupController跳过等待 promise 解决。

import Ember from 'ember';

export default Ember.Route.extend({
  setupController(controller) {
    const promises = {};
    promises[0] = Ember.$.getJSON('example.com').then(response => {
      // do some post-processing here
    });
    this._super(controller, promises);
  }
});

关于javascript - 如何适应 EmberJS 中加载缓慢的 highcharts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34999904/

相关文章:

javascript - 在回调函数中访问类属性

javascript - 当在另一个 php 文件中插入某些数据时,使用 ajax 在 php 页面的 div 中加载内容

javascript - 自动对象到数组的转换

ember.js - 无法启动守望者;回退到 NodeWatcher 来获取文件系统事件

javascript - 新的 Promise() 与 (async () => {})()

javascript - Puppeteer 脚本卡住

jquery - 使用 Ember.js 正确 Hook domready

javascript - 在 Highcharts 上设置左右边框

javascript - 将数据库中的数据格式化为 Highcharts 系列格式

javascript - 如何在Hightcharts中设置垂直条形图|我作为组件通过了。如何作为 Prop 发送