角度2:推迟零部件加载



我正试图从Angular 2应用程序中的服务器加载一个配置文件,正如你所想象的,它包含整个应用程序所需的初始化参数,因此必须首先加载。

问题是JS在设计上是异步的,因此没有办法让应用程序"等待"首选文件。我已经创建了一个使用异步AJAX请求发送请求的服务,但我不知道如何在缓存仍未加载时处理其他部分询问该服务"该首选项的值是什么"。我不能拒绝请求,也不能阻止它们,使它们异步是行不通的。

应该有一种方法可以在"加载"屏幕中停止应用程序,我相信这是正确的方法。当应用程序处于此模式时,加载首选项,然后显示UI。

问题:如何将主要组件的加载推迟到加载阶段结束?最好加载一个组件,该组件检查一系列必要条件并初始化服务(连接、设置、身份验证等(,然后在满足所有条件后加载主UI。

在Angular2 Dart中,我使用Future使其工作;则无论什么需要该属性,都必须CCD_ 2该值。请参阅:https://www.dartlang.org/tutorials/language/futures

Future gatherNewsReports() async {
  // more slow code here
  String path =
      'https://www.dartlang.org/f/dailyNewsDigest.txt';
  return (await HttpRequest.getString(path));
}
Future printDailyNewsDigest() async {
  String news = await gatherNewsReports();
  print(news);
}

我相信,如果您不使用Dart,那么在JavaScript中使用Promises也可以做到这一点。请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

async function printDailyNewsDigest() {
  var news = await gatherNewsReports();
  console.log(news);
}

在完成future/promise后,触发URL更改,然后可以加载所需的页面。

JavaScript和Dart是单线程的,如果你在任何时候阻止,任何东西都不会继续工作。

最新更新