
本文旨在解决在JavaScript函数中正确插入加载动画(Spinner)的问题。通过示例代码,详细讲解如何使用async/await和Promise.all来确保Spinner在数据处理完成前后正确显示和隐藏,避免异步操作导致的显示问题,提升用户体验。
在进行数据处理,特别是涉及异步操作(例如Ajax请求)时,为了提升用户体验,通常需要在数据加载或处理过程中显示加载动画(Spinner)。然而,如果处理不当,Spinner的显示和隐藏可能会出现问题,例如Spinner在数据处理完成前就消失,或者一直显示不消失。
async/await 是 JavaScript 中处理异步操作的强大工具,它可以使异步代码看起来更像同步代码,从而更容易理解和维护。要解决Spinner显示问题,关键在于确保在所有异步操作完成后再隐藏Spinner。
以下是一个使用 async/await 的示例:
立即学习“Java免费学习笔记(深入)”;
document.getElementById("insert").addEventListener(
"click",
async function (event) {
event.preventDefault();
var spinner = document.getElementById("spinner");
spinner.style.display = ""; // 显示 Spinner
await insertDataToDatabase(results.data); // 等待数据插入完成
spinner.style.display = "none"; // 隐藏 Spinner
},
false
);
async function insertDataToDatabase(data) {
data_noheader = data.slice(1);
for (i = 0; i < data_noheader.length; i++) {
await $.ajax({
url: "index.php",
type: "POST",
dataType: "json",
data: {
action: 'import',
data: data_noheader[i],
},
success: function (response) {},
error: function (response) {},
});
}
}代码解释:
注意事项:
如果数据插入的顺序不重要,可以使用 Promise.all 来并发执行多个 Ajax 请求,从而提高效率。
document.getElementById("insert").addEventListener(
"click",
async function (event) {
event.preventDefault();
var spinner = document.getElementById("spinner");
spinner.style.display = "";
await insertDataToDatabase(results.data);
spinner.style.display = "none";
},
false
);
async function insertDataToDatabase(data) {
data_noheader = data.slice(1);
await Promise.all(
data_noheader.map((row) => {
return $.ajax({
url: "index.php",
type: "POST",
dataType: "json",
data: {
action: "import",
data: row,
},
success: function (response) {},
error: function (response) {},
});
})
);
}代码解释:
注意事项:
通过使用 async/await 和 Promise.all,可以有效地控制异步操作的流程,确保 Spinner 在数据处理完成前后正确显示和隐藏。选择哪种方法取决于具体的应用场景,如果需要保证顺序,则使用 async/await 逐个处理;如果顺序不重要,则使用 Promise.all 并发处理,提高效率。 无论选择哪种方法,都应该确保正确处理 Promise 的 resolve 和 reject 情况,以避免出现意外错误。
以上就是JavaScript函数中插入加载动画(Spinner)的正确姿势的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号