首页 > 解决方案 > 在 Node.js 中实现同步和异步

问题描述

我应该如何在Nodejs中实现和区分异步和同步功能,无法正确实现?

标签: node.js

解决方案


它非常简单:

假设您有一个功能:

var resolveAfter2Seconds = function() {
  console.log("starting slow promise");
  return new Promise(resolve => {
    setTimeout(function() {
      resolve("slow");
      console.log("slow promise is done");
    }, 2000);
  });
};

如果你自己调用函数

 const slow = await resolveAfter2Seconds();
 console.log(slow);

那将是同步的。

为了使其异步,您可以使用async关键字,其中包含一个await表达式,该表达式暂停 async 函数的执行并等待传递的 Promise 的解析,然后恢复 async 函数的执行并返回解析的值。有关更多详细信息,请单击此链接异步/等待

这是一个例子:

var start = async function() {

  // 1. Execution gets here almost instantly
  const slow = await resolveAfter2Seconds();
  console.log(slow); // 2. this runs 2 seconds after 1.

}


推荐阅读