Javascript 理解异步和等待

Javascript 理解异步和等待,javascript,asynchronous,Javascript,Asynchronous,我对JS还是个新手,我试图理解异步并等待 我在网上浏览了这篇令人惊叹的文章,他们在那里看到了这段代码片段 function doubleAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x * 2); }, 2000); }); } async function addAsync(x) { const a = await doubleAf

我对JS还是个新手,我试图理解异步并等待

我在网上浏览了这篇令人惊叹的文章,他们在那里看到了这段代码片段

function doubleAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x * 2);
    }, 2000);
  });
}

async function addAsync(x) {
  const a = await doubleAfter2Seconds(10);
  const b = await doubleAfter2Seconds(20);
  const c = await doubleAfter2Seconds(30);
  return x + a + b + c;
}


addAsync(10).then((sum) => {
  console.log(sum);
});
现在根据上面的文章,我能够得出一些结论,如果有人能验证它是否正确,我会很高兴

要使用wait,我们需要将它嵌套在异步函数下? 异步解决了链接问题?但承诺也是如此,好吗?那么,是什么让异步变得独特/更好呢

要使用wait,我们需要将它嵌套在异步函数下

是,wait关键字仅在异步函数中可用

异步解决了链接问题

它使代码看起来更直观

但承诺也是如此,好吗

您仍可以将其与wait一起使用,例如:


在这种情况下,Promise.all中的所有承诺都将并行解析,您将在2秒内得到结果,而不是6个Promise.all等待并行解析每个承诺,另一方面等待逐个执行,也就是说,如果您有许多不同的函数,每个函数都严重依赖于前一个函数的值,那么在这种情况下,您就不能使用Promise.all。

那么,是什么让异步变得独特/更好呢只需将给定的示例更改为使用Promissions和.然后仅调用并比较两个版本。
async function addAsync(x) {
  const [a, b, c] = await Promise.all([
    doubleAfter2Seconds(10), 
    doubleAfter2Seconds(20),  
    doubleAfter2Seconds(30)
  ]);
  return x + a + b + c;
}