Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用 async/await 实现 JavaScript 中的异步加载效果_创想鸟

使用 async/await 实现 JavaScript 中的异步加载效果

使用 async/await 实现 javascript 中的异步加载效果

本文将介绍如何使用 async/await 关键字在 JavaScript 中实现异步加载效果,避免 setTimeout 和 setInterval 带来的回调地狱问题。通过创建一个简单的 sleep 函数,结合 async/await,可以使代码看起来更像同步执行,从而提高代码的可读性和可维护性。本文提供了一个完整的示例,模拟了操作系统加载过程,并展示了如何使用 async/await 来控制加载动画的显示和结束。

在 JavaScript 中,处理异步操作的常见方式是使用回调函数、Promise 或 async/await。async/await 提供了一种更简洁、更易于理解的方式来处理异步操作,使代码看起来更像同步代码。

使用 async/await 实现异步加载

下面是一个使用 async/await 实现异步加载的示例,该示例模拟了一个操作系统加载过程,并在控制台中显示加载动画。

首先,定义一个 sleep 函数,该函数返回一个 Promise,该 Promise 在指定的时间后 resolve。

立即学习“Java免费学习笔记(深入)”;

const sleep = ms => new Promise(r => { setTimeout(r, ms);});

接下来,定义一个 async 函数 OSLoad,该函数模拟操作系统加载过程。该函数使用一个循环来显示加载动画,并在每次循环中使用 await sleep(250) 来暂停 250 毫秒。

async function OSLoad(OS = "", loadingTimeSeconds = 10) {  var P = ["", "|", "/", "-"];  var x = 0;  for (let lp = 0; lp < loadingTimeSeconds * 4; lp ++) {    process.stdout.write(      "" + P[x++] + " Loading " + OS    );    x &= 3;    await sleep(250);  }  process.stdout.write("" + OS + " is loaded..");}

最后,调用 OSLoad 函数来启动操作系统加载过程。

OSLoad('Fake OS 4.01');

完整示例代码

下面是完整的示例代码,包括一个简单的控制台模拟器。

//very simple console emulatorconst pre = document.querySelector('pre');const consoleBuffer = new Array(10).fill(' ');let cpos = 0;const consoleWrite = txt => {  const s = txt.split('');  for (const c of s) {    if (c === '') cpos = 0;    else consoleBuffer[cpos++] = c;  }  pre.innerText = consoleBuffer.join('');}window.process = { stdout: { write: consoleWrite } };//OS Loaderconst sleep = ms => new Promise(r => { setTimeout(r, ms);});async function OSLoad(OS = "", loadingTimeSeconds = 10) {  var P = ["", "|", "/", "-"];  var x = 0;  for (let lp = 0; lp < loadingTimeSeconds * 4; lp ++) {    process.stdout.write(      "" + P[x++] + " Loading " + OS    );    x &= 3;    await sleep(250);  }  process.stdout.write("" + OS + " is loaded..");}OSLoad('Fake OS 4.01');
pre {  height: 90vh;  background-color: black;  color: white;}

注意事项

async 函数必须使用 await 关键字来等待 Promise resolve。await 关键字只能在 async 函数中使用。使用 async/await 可以使代码更易于阅读和维护,但也会增加代码的复杂性。

总结

async/await 提供了一种更简洁、更易于理解的方式来处理 JavaScript 中的异步操作。通过创建一个简单的 sleep 函数,结合 async/await,可以使代码看起来更像同步执行,从而提高代码的可读性和可维护性。

以上就是使用 async/await 实现 JavaScript 中的异步加载效果的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1525673.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何实现一个符合Promise A+规范的完整Promise库?
上一篇 2025年12月20日 17:52:22
JavaScript中的Symbol类型有哪些独特的应用场景?
下一篇 2025年12月20日 17:52:40

相关推荐

发表回复

登录后才能评论
关注微信