- async await+ for循环+delay函数
- setinterval+if判定
- 递归调用
- 链式调用
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>//async await delay for循环 方法一let str = 'hello world';async function mySSE(str){// let strArr = str.split('');for(let i =0;i<str.length;i++){await delay(1500,str[i]).then(res=>console.log(res))}}function delay(timer,data){return new Promise((resolve,reject)=>{setTimeout(()=>resolve(data),timer)})}mySSE(str)// setinterval 方法二 流失输出function run(str) {let index = 0;let n = setInterval(() => {if (index < str.length) {console.log(str[index])index++} else {clearInterval(n)}}, 1500)}let str = 'hello world'run(str)// 递归调用 方法三function delay(timer, data) {return new Promise((resolve, reject) => {setTimeout(() => resolve(data), timer)})}function run(str,count) {if (count == str.length) returnreturn delay(1500,str[count]).then(res=>{console.log(res); return run(str,count+1)})}let str = 'hello world'run(str,0)// 链式调用 方法四function delay(timer, data) {return new Promise((resolve, reject) => {setTimeout(() => resolve(data), timer)})}function run(str,count) {return delay(1500,str[count]).then(res=>{console.log(res);return delay(1500,str[count+1]).then(res=>{console.log(res)})}) //... }let str = 'hello world'run(str,0)</script>
</body></html>