首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nodejs中编码时,我应该担心上下文切换吗?

问在nodejs中编码时,我应该担心上下文切换吗?
EN

Stack Overflow用户
提问于 2020-06-02 11:32:16
回答 1查看 155关注 0票数 0

我知道node.js我的代码运行在一个线程中,并且它不是并发的,但是我应该担心多个REST请求或setTimeout触发器导致的上下文切换吗?

换句话说,尽管不是并发,但node.js 异步是

例如,在以下代码中:

代码语言:javascript
复制
let a = 0;

const inc = () => new Promise(resolve => {
    temp = number;      // 1
    number = temp + 1;  // 2
    resolve();
});

如果我给inc打了10次电话,我最终会得到10,还是可以在标记为1和2的行之间进行上下文切换?

EN

回答 1

Stack Overflow用户

发布于 2020-06-02 11:39:16

您可以用NodeJS编写异步代码。

如果您有这样的代码,您将得到不确定的结果:

代码语言:javascript
复制
let a = 0;

new Promise((resolve, reject) => { /* do something */}).then(() => { a = 1; }).then(() => { /* more stuff */});
new Promise((resolve, reject) => { /* do something */}).then(() => { a = 2; }).then(() => { /* more stuff */});

这两个承诺都将对全局变量a起作用,而且由于无法确定哪个变量将首先完成,因此无法知道a在这两个承诺中的价值。

最后一件事--因为你的问题使用了“担心”这个词,这让我相信这是你会想到的事情。如果是这样的话,有几种模式,比如函数式编程中的读写器模式或依赖注入,有助于减轻对竞争条件的担忧。这些都是任何语言中的良好实践(包括NodeJS),因此阅读它们可能会有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62151032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档