在node.js中使用承诺会使节点同步吗?

在node.js中使用承诺会使节点同步吗?,node.js,asynchronous,promise,synchronous,Node.js,Asynchronous,Promise,Synchronous,承诺如何在提供同步效果的同时仍然保持异步 也就是说,承诺可以使顺序代码执行,这不就消除了异步吗 那么,node.js有什么意义呢?不,承诺不会使node.js代码同步运行——承诺允许您编写看起来同步的流 执行此操作时: console.log(1); setTimeout(() => console.log(2)); console.log(3); Node.js按顺序运行代码,首先记录1,然后在超时后注册函数,然后记录3。当计时器启动时,在一个大的时间之后-它执行它的函数并记录2。不涉

承诺如何在提供同步效果的同时仍然保持异步

也就是说,承诺可以使顺序代码执行,这不就消除了异步吗


那么,node.js有什么意义呢?

不,承诺不会使node.js代码同步运行——承诺允许您编写看起来同步的流

执行此操作时:

console.log(1);
setTimeout(() => console.log(2));
console.log(3);
Node.js按顺序运行代码,首先记录1,然后在超时后注册函数,然后记录3。当计时器启动时,在一个大的时间之后-它执行它的函数并记录2。不涉及线程

对于Promissions和async await,当您
await
时,您明确告诉Node.js“暂停执行此函数,并在我等待的Promission得到解决时继续”<代码>暂停执行与线程阻塞不同-在操作系统级别不会发生上下文切换-它只是跟踪函数,并在承诺解决时调用它


节点以“我们的代码-平台代码”循环运行,您的代码运行(直到它结束,例如通过点击等待),然后平台代码运行(例如,检查计时器和I/O),然后该代码可以再次调用您的代码(例如挂起的异步函数)并运行它。

否,承诺不会使Node.js代码同步运行-承诺允许您编写看起来同步的流

执行此操作时:

console.log(1);
setTimeout(() => console.log(2));
console.log(3);
Node.js按顺序运行代码,首先记录1,然后在超时后注册函数,然后记录3。当计时器启动时,在一个大的时间之后-它执行它的函数并记录2。不涉及线程

对于Promissions和async await,当您
await
时,您明确告诉Node.js“暂停执行此函数,并在我等待的Promission得到解决时继续”<代码>暂停执行与线程阻塞不同-在操作系统级别不会发生上下文切换-它只是跟踪函数,并在承诺解决时调用它


节点以“我们的代码-平台代码”循环运行,您的代码运行(直到结束,例如通过点击等待),然后平台代码运行(例如,检查计时器和I/O),然后该代码可以调用您的代码(例如,挂起的异步函数)再次运行它。

什么决定了我是否应该使用Promissions vs async?
async/await
建立在Promissions之上,当你使用async/await时,你已经在使用Promissions:)我将如何编写一个具有登录系统+CRUD db调用的大型系统。?这意味着我将不得不写很多承诺。请让我参考使用承诺的教程/书籍。@sdfdsfsdf写很多承诺很好,我们在生产中每台服务器同时有数十万个承诺。是什么决定了我是否应该使用承诺还是异步?
async/await
建立在承诺之上,当您使用async/Wait时,您已经在使用Promissions:)如何编写一个具有登录系统+CRUD db调用的大型系统。?这意味着我将不得不写很多承诺。请让我参考使用承诺的教程/书籍。@sdfdsfsdf写很多承诺很好,我们在生产中每台服务器同时有数十万个承诺。