小编Wei*_*inn的帖子

如何在 Angular 2/4 Typescript 中按顺序运行函数

我在尝试在我的 Angular 2/4 项目中按顺序运行函数时遇到问题。

我有retrieveData()从数据服务中检索数据并将它们分配到我声明的数组中的函数。

然后我有displayData()使用存储在数组中的数据并将它们显示在图表中的函数。

当我尝试运行它们时,例如:

function(){
  this.retrieveData();
  this.displayData();
}
Run Code Online (Sandbox Code Playgroud)

displayData()函数先运行retrieveData()主要是因为函数中的数据服务retrieveData()。因此无法正确显示图形。

我发现可以按顺序运行函数的方法之一是async.waterfallasync库中,但我无法将库导入到我的项目中,控制台日志显示: Uncaught Error: Unexpected value 'waterfall' imported by the module 'AppModule'. Please add a @NgModule annotation.

我不想使用 Promises 和 Observables,因为它们要求初始函数具有某种返回值以传递给下一个函数。我在某种程度上设法使用setTimeOut()函数来实现它,但我真的怀疑该方法的可靠性和稳健性。

那么,async在 Angular 2/4 中使用 有什么帮助,或者有什么方法可以让函数在没有任何返回承诺的情况下等待?

更新

很抱歉给大家带来的困惑和不便。我正在发布并要求一个过度简化的版本。这是我的代码中更完整的部分。我是一个 Angular 和 Typescript 菜鸟,在 Async 编程技术方面更是菜鸟。

下面是我在retrieveAllData()方法中实现的承诺。它在编译时或运行时都不会出现任何错误。但是当函数仍然异步运行时,即refreshAllCharts()仍然在retrieveAllData(). 我对承诺的实现有什么缺陷吗?

import { Component, OnInit, AfterContentInit } from '@angular/core';
import { …
Run Code Online (Sandbox Code Playgroud)

asynchronous typescript angular

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

angular ×1

asynchronous ×1

typescript ×1