آرایهها - حلقه زدن در یک لیست در Angular 2 با کمی تأخیر
چگونه میتوانم با Angular 2 و TypeScript یک آرایه را با کمی تأخیر حلقهزنی کنم؟
من یک آرایه دارم،
students: Array<any> = [
{
name: "Alan"
},
{
name: "Jake"
},
{
name: "Harry"
},
{
name: "Susan"
},
{
name: "Sarah"
},
{
name: "Esther"
}
];
من میخواهم از طریق لیست حلقه بزنم و نامها را با تاخیر 2000ms نمایش دهم.
<div *ngFor="let student of students">
{{student.name}}
</div>
با تأخیر کار نمیکند اما همزمان در حال حلقه زدن است.
پاسخ شماره ۱
فقط از setTimeout استفاده کنید. برای مثال (* آزمایش نشده):
students: Array<any> = [ ];
populateArrayWithDelay():void{
let people = [
{
name: "Alan"
},
{
name: "Jake"
},
{
name: "Harry"
},
{
name: "Susan"
},
{
name: "Sarah"
},
{
name: "Esther"
}
];
for(let i = 0; i < people.length; i++){
let student = people[i];
setTimeout(() => {
this.students.push(student);
}, 2000*(i+1));
}
}
پاسخ شماره ۲
مثال Plunker
export class App {
name:string;
students: Array<any> = [
{
name: "Alan"
},
{
name: "Jake"
},
{
name: "Harry"
},
{
name: "Susan"
},
{
name: "Sarah"
},
{
name: "Esther"
}
];
constructor() {
var timer = 0;
this.$students = Observable.from([[], ...this.students])
.mergeMap(x => Observable.timer(timer++ * 1000).map(y => x))
.scan((acc, curr) => {acc.push(curr); return acc;});
}
}
