在node.js中使用promises是否使节点同步?

时间:2017-12-07 09:04:11

标签: node.js asynchronous promise synchronous

在提供同步效果的同时,promises如何保持异步?

I.e Promise可以执行顺序代码,不会删除异步吗?

那么,什么是node.js?

1 个答案:

答案 0 :(得分:3)

不,承诺不会使Node.js代码同步运行 - promises允许您编写出现同步的流。

执行此操作时:

console.log(1);
setTimeout(() => console.log(2));
console.log(3);

Node.js在顺序运行代码,首先它记录1,然后它注册一个在超时后发生的函数,然后它记录3.当计时器触发一个大的时候 - 它执行它的功能并记录2.没有线程参与其中。

使用promises和async await,当你await时,你明确地告诉Node.js"暂停执行这个功能,并在我等待解决的承诺时继续#34;" 。 pause executing与线程阻塞不同 - 在操作系统级别没有发生上下文切换 - 它只是跟踪功能,当promise解析时它会调用它。

节点使用"我们的代码 - 平台代码"循环,你的代码运行(直到它结束,例如通过点击await),然后平台代码运行(例如,检查定时器和I / O)然后该代码可以调用你的代码(例如你的暂停异步函数)再次运行它。