5.6 AsyncPipe 预置de有状态管道 - RLwu/angular-start GitHub Wiki
AsyncPipe
AsyncPipe是Angular2框架预置的一个有状态管道,它的输入是一个异步对象:Promise对象 、Observable对象或者EventEmitter对象。
每当异步对象产生新的值,AsyncPipe会返回这个新的值,因此,AsyncPipe需要Angular2框架 持续进行变化检测,它的Pipe注解的pure属性值为false。
我们可以使用AsyncPipe来重写之前的EzCountdown管道,让它返回一个Observable:
@Pipe({name : "countdown"})
class EzCountdown{
transform(input){
var counter = input;
return new Observable(o => {
setInterval(_ => {
o.next(counter);
counter--;
if(counter<0) o.complete();
},1000);
});
}
}
你注意到现在EzCountdown是一个无状态的管道了,它返回一个Observable对象,我们在模板中 使用AsyncPipe来继续处理这个对象:
{{ 10 | countdown | async }} 简单地说,Observable和EventEmitter适合用多次返回结果的异步应用场景,而Promise则适合于 仅返回一次结果的异步应用场景。