第15天:回调地狱
#javascript #100daysofcode #day15

异步

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();
  });
});

回调地狱,也被称为“厄运金字塔”,是多个嵌套回调使代码难以读取和维护的情况。当处理复杂的异步操作时,这通常会发生。

维护者