什么是同步?
我们编写的JavaScript代码实际上是单线程的程序,那就决定了我们的代码是一行一行的顺序执行的,处理一些简短、快速的运算操作时主线程就够了,如果在同步程序中发送了网络请求,如果超时了,下面的代码依赖于网络请求,那么整个网页将会失去响应。

什么是异步?
而异步的概念则与同步恰恰相反,一个异步过程的执行将不再与原有的序列有顺序关系,特别是对发送网络请求,不确保响应时间时候,异步是最优选择,网络请求无论多长时间,程序将不会在此等待,直接走下面的代码,等异步的请求有了响应,主线程几乎不用关心异步任务的状态了,自己完成回调后续的操作,程序间互不影响。

简单来理解:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。

此外,
await/async,这两个命令是成对出现的。一般与Promise一起使用(await后面接promise对象),它们能够更好地处理异步操作和返回结果。如果返回的不是Promise对象,await将自动将其包装在一个已解决的Promise中。

function fetchData() {
  return new Promise((resolve, reject) => {
// 异步操作
setTimeout(() => {
  const data = 'Hello, World!';
  resolve(data);
}, 2000);
  });
}

async function getData() {
  try {
const result = await fetchData(); // 等待fetchData函数返回的Promise对象
console.log(result); // 输出:Hello, World!

return 'Done'; // 返回一个普通的值
  } catch (error) {
console.log(error);
  }
}

getData().then((value) => {
  console.log(value); // 输出:Done
});

总结:如果涉及到网络请求没有依赖关系的话,异步请求是效率最高的,但是下一个的方法或者逻辑依赖于上一个网络请求的结果,那么就必须使用await命令,将异步结果等待返回之后再执行后面的代码。

 posted on 2023-10-01 16:28  外包侠  阅读(150)  评论(0编辑  收藏  举报