node.js - 在 Node.js 中实现同步和异步
问题描述
我应该如何在Nodejs中实现和区分异步和同步功能,无法正确实现?
解决方案
它非常简单:
假设您有一个功能:
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.
}
推荐阅读
- excel - 根据订单偏好和可用性从表中选择值 - Excel 2016
- node.js - 连接在 docker 容器中运行的数据库 (MongoDB) 和后端 (nodejs)
- javascript - 为什么 v-for & axios 不一个个加载项目?
- python - CMake不断从cygwin python中获取Python,如何从windows安装的Python中获取
- c++ - 混合使用左值和右值的三元运算符的类型推导
- android - 如何将渐变定义为圆形progressBar
- c - 无法将伪代码转换为 C(HykSort 算法的 MPI)
- oh-my-zsh - 为什么卸载ohmyzsh后终端以'/Users/nicholas/.zshrc:source:75: no such file or directory:'开头?
- reactjs - 为什么我会得到“`key` is not a prop”。在反应?
- .net - 变量声明中的 ReadOnly 有什么用?