[英]Delay or Sleep function in NativeScript/Angular
我的睡眠/延遲功能不起作用。
我嘗試使用'rxjs / operators'延遲功能,但是沒有用。
我的代碼:
sentence: string = "Hallo"
wordToMorse(sentence: any) {
for (var char of sentence) {
if (char != " ") {
this.vibrateWord(char);
this.delay(1000);
} else {
this.delay(1000);
}
}
}
vibrateWord(character: any) {
if (character == "H") {
this.vibrator.vibrate(500);
} else if (character == "a") {
this.vibrator.vibrate(1000);
} else if (character == "l") {
this.vibrator.vibrate(500);
} else if (character == "o") {
this.vibrator.vibrate(2000);
}
}
async delay(ms: number) {
await new Promise(resolve => setTimeout(()=>resolve(), ms)).then(()=>console.log("fired"));
}
我希望發生的是,句子中的字母每次振動后,都應該等待1秒。
您將aysnc await
放置在錯誤的位置,請嘗試以下操作:
async wordToMorse(sentence: any) { // <------ Change
for (var char of sentence) {
if (char != " ") {
this.vibrateWord(char);
await this.delay(1000); // <------ Change
} else {
await this.delay(1000); // <------ Change
}
}
}
delay(ms: number) { // <------ Change
return new Promise(resolve => setTimeout(()=>resolve(), ms)).then(()=>console.log("fired")); // <------ Change
}
有一種使用Observables的干凈方法:
from(sentence.split('')).pipe(
take(sentence.length),
concatMap(letter => of(letter).pipe(delay(1000))),
tap(letter => {
// vibrate logic here
})
).subscribe();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.