在这个Plunker中,我有一个模板:
<span *ngFor="let a of Articles">{{a}}</span>
这是组件类:
export class App
{
Articles: number[];
constructor()
{
this.getData();
}
simualteDb()
{
return new Promise((a, b) =>
{
setTimeout(function()
{
a(
{ // notice , an object ,not an array
data: [0, 1, 2]
});
}, 500)
});
}
async getData()
{
this.Articles = (await this.simualteDb()).data;
}
}
这确实有效,我确实在输出中看到了012
。但是我想使用async
管道。
因此,我希望我的模板是:
<span *ngFor="let a of Articles |async ">{{a}}</span>
但是有一个问题。
文章
不是数组。它是一个具有data
prop的对象,该属性是必需的数组。
我不能这样做:
<span *ngFor="let a of Articles.data |async ">{{a}}</span>
我创建了另一个plunker,它只返回一个数组:
而且它可以与| async
一起工作。
问题:
看看我的第一个代码,我如何使用异步管道,同时仍然解析一个对象而不是一个数组?
{data: [0, 1, 2]}
为您提供了使用异步管道的另一个选项(您提到了您想要的),这意味着您需要一个可观察的工具来使用...服务返回可观察:
getArticles() {
return this.http.get('url')
.map(res => res.json())
}
在组件中,指定可观察到的:
ngOnInit() {
this.Articles = this.service.getArticles()
}
然后,您可以在视图中使用异步管道,如下所示:
<div *ngFor="let a of (Articles | async)?.data">{{a}}</div>
演示
问题内容: 我在自己的类中拥有所有异步调用,因此我不想将aync’ly设置为全局变量。为此,我想从我的asunc postProcess方法返回对象,例如字符串。 能做到吗? 下面是我类的一般结构,例如,我想从onPostExecute()返回一个字符串。我看到在其他地方提到了委托,但这似乎很混乱,确定有办法为类或方法提供返回类型吗? 问题答案: 像下面这样 和听众课 你可以这样打电话
我(大部分)了解CompletableFuture的三种执行方法: 非异步(同步执行) 默认异步(使用默认执行器异步) 自定义异步(使用自定义执行器异步) 我的问题是:什么时候应该支持使用非异步方法? 如果您有一个调用其他方法的代码块,该代码块也返回CompletableFuture,会发生什么?表面上看,这可能很便宜,但如果这些方法也使用非异步调用,会发生什么?这难道不是一个很长的非异步块,可能
在我看来,有一个与控制器的一个功能链接的输入文件 此函数调用服务中的一个函数,该函数假定将我的xml文件转换为json 在服务函数中,XML文件在文件读取器中读取,然后在文件读取器的onloadend部分转换为XML 如何在onloadend中检索转换后的json结果,以便在Angular控制器中使用它,特别是在promise的情况下?或者我应该使用setTimeout吗?
我想在过滤器返回空数组时显示一条消息,例如“未找到结果” 这是我的ngFor列表,它有一个过滤器 如果没有过滤器,这很容易,但是因为有过滤器,我不知道怎么说过滤器没有返回结果。 这是我的过滤器: 这一切都有效,但我只需要向用户显示,过滤器没有返回结果,而是返回消息,而不是空屏幕。
当导航到带有防护装置的页面时,已或都会打印到控制台(在等待 firebase 响应的一段时间后)。但是,导航永远不会完成。另外,如果我没有登录,我会被重定向到路由。因此,我遇到的问题是 不会向用户显示请求的页面。我假设这是因为我正在使用回调,但我无法弄清楚如何做到这一点。有什么想法吗?
问题内容: 使用promise API,如何并行发送两个异步请求,以及如何将合并的结果解析为响应。 现在,当我像这样调用get()时 我需要获得指示的合并结果。如何使用Angular promise API做到这一点? 问题答案: 正如@Matt所说,您需要使用,但用法并不完全正确。AngularJS不支持,并且它们无论如何都不能那样工作,因为没有诸如对多个值的承诺之类的东西,相反,您仅对数组有一