异步
JavaScript是单线读取的,这意味着它一次执行一个操作。在处理耗时的任务时,这可能是有问题的,例如从API中获取数据或执行重型计算。异步编程使我们能够同时执行任务而无需阻止主线程,从而确保我们的应用程序保持响应能力。
内置的异步功能
settimeout 和 setInterval 是内置的JavaScript函数,可让您延迟执行代码或以指定的间隔重复。
语法:setTimeout(<function>, duration)
回调一直是在JavaScript中处理异步操作的传统方式。回调是作为参数传递给另一个函数的函数,一旦异步任务完成。
function stepOne(callback) {
setTimeout(() => {
console.log('Step One Complete');
callback();
}, 1000);
}
stepOne(() => console.log('callback after step 1 completed'));
回叫地狱
在回调完成工作时,嵌套回调可能会导致可怕的“回调地狱”,使代码难以读取和维护
function stepOne(callback) {
setTimeout(() => {
console.log('Step One Complete');
callback();
}, 1000);
}
function stepTwo(callback) {
setTimeout(() => {
console.log('Step Two Complete');
callback();
}, 800);
}
function stepThree() {
setTimeout(() => {
console.log('Step Three Complete');
}, 500);
}
// Nested Callbacks - Callback Hell
stepOne(() => {
stepTwo(() => {
stepThree();
});
});
回调地狱,也被称为“厄运金字塔”,是多个嵌套回调使代码难以读取和维护的情况。当处理复杂的异步操作时,这通常会发生。