我正在尝试做我认为应该是一个非常简单的例子。这是在Ionic 2中用typescript编写的。
我想遍历2个hello数组。一旦完成循环,我想清除this.message。我有一个runHello()函数。我认为for循环首先运行然后运行this.message =“”但是它在循环完成之前运行。
我搜索了很多关于此事的内容,除了Promises之外,我找不到多少帮助。我认为这对此有点复杂,并且承诺似乎不适用于Ionic或Typescript。
我有一个resetHello()函数,如果我无法使用它,我将绑定到一个按钮。
学习编程相当新。任何帮助将不胜感激!
export class Page1 {
message: string = "";
helloArr: Array<any>;
constructor() {}
sayHello(){
setTimeout( ()=>{
this.message ="Hello";
}, 2000);
};
sayHello2(){
setTimeout( ()=>{
this.message ="Hello2";
}, 3000);
};
runHello(){
this.helloArr = [this.sayHello(), this.sayHello2()];
for(let func of this.helloArr){
func;
};
this.message = "this runs before for loop is done";
}
// resetHello(){
// this.message ="";
// }
}
答案 0 :(得分:0)
setTimeout
次呼叫是异步的,因此在检查是否应重置this.message
之前,您必须等待其回调运行。
export class Page1 {
message: string = "";
helloArr: Array < any > ;
count = 0;
constructor() {}
sayHello() {
setTimeout(() => {
this.message = "Hello";
decrement()
}, 2000);
};
sayHello2() {
setTimeout(() => {
this.message = "Hello2";
decrement();
}, 3000);
};
runHello() {
this.helloArr = [this.sayHello(), this.sayHello2()];
this.count = this.helloArr.length;
for (let func of this.helloArr) {
func;
};
// this.message = "this runs before for loop is done";
}
decrement() {
this.count = --this.count;
if (this.count == 0) {
this.message = "";
}
}
}