V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yamada
V2EX  ›  Node.js

有兴趣准备学 node.js,最担心的是多线程和回调地狱

  •  
  •   yamada · 2016-04-09 00:36:07 +08:00 · 5349 次点击
    这是一个创建于 2941 天前的主题,其中的信息可能已经有所发展或是发生改变。

    你们是用哪些第三方库来处理这 2 个问题的 ?

    17 条回复    2016-04-19 10:41:24 +08:00
    zwh8800
        1
    zwh8800  
       2016-04-09 00:37:26 +08:00
    nodejs 是没有多线程问题的吧。
    theohateonion
        2
    theohateonion  
       2016-04-09 00:43:00 +08:00   ❤️ 1
    nodejs 没有多线程。还有你都没学 nodejs 为什么就开始考虑回调地狱了?
    rokeyzki
        3
    rokeyzki  
       2016-04-09 00:48:11 +08:00
    Node.js 没有多线程

    担心回调地狱,可以用 Generator 函数啊

    如果是做 web 后端,推荐 Koa 框架
    yamada
        4
    yamada  
    OP
       2016-04-09 01:08:02 +08:00 via Android
    那应该怎么充分的利用多核?
    techmoe
        5
    techmoe  
       2016-04-09 01:09:02 +08:00
    充分利用多核是解释器那部分的事情吧
    shuding
        6
    shuding  
       2016-04-09 01:10:35 +08:00
    Cluster: https://nodejs.org/api/cluster.html
    至于回调地狱,完全可以直接上手 Generator 或者 Promise 。
    zhuangzhuang1988
        7
    zhuangzhuang1988  
       2016-04-09 01:17:18 +08:00
    async/await 大法好, 而且你可以用, https://github.com/Microsoft/ChakraCore 引擎级别支持.
    Srar
        8
    Srar  
       2016-04-09 02:39:18 +08:00
    pm2 start app -i max 按照 CPU 线程开启多个 node 实例
    janxin
        9
    janxin  
       2016-04-09 08:25:10 +08:00 via iPhone
    第一个问题没有
    第二个问题有伪解决方案,还是要等 async/await 标准化才能最终解决
    hxtheone
        10
    hxtheone  
       2016-04-09 09:14:13 +08:00 via iPhone
    上 Promise 吧,感觉是目前避免回调地狱的最简单的方式了,很多第三方库也已经原生支持 then 方法
    forever139
        11
    forever139  
       2016-04-09 10:28:31 +08:00
    1. 以前是 pm2 来弥补了不足,后来官方自己推荐用 [Cluster]( https://nodejs.org/api/cluster.html)
    2. 以前用 async 包(es5),以及 bluebird (Promise 第三方实现 es6 的标准)。还有大家说的 async/await 那个是 es7 的东西
    magicdawn
        12
    magicdawn  
       2016-04-09 11:22:09 +08:00
    使用 ES7 async/await 的思想,使用 ES6 generator 来写代码。
    类似
    python3.4 的 asyncio + yield
    python3.5 的 async + await

    去看 co.wrap & bluebird.coroutine 即可,一样的东西。
    laoyur
        13
    laoyur  
       2016-04-09 11:22:14 +08:00
    我浅尝辄止地学了一段时间后,还是觉得转投 Python 阵营比较适合我
    welefen
        14
    welefen  
       2016-04-09 12:57:03 +08:00
    推荐使用 ThinkJS ,完全没有回调地狱的问题
    123s
        15
    123s  
       2016-04-12 09:55:25 +08:00
    @zhuangzhuang1988 ChakraCore 是不是也可以做桌面应用,如果 ms 可以提供一些系统级接口就好了
    JiangShenMing
        16
    JiangShenMing  
       2016-04-15 08:59:37 +08:00
    呵呵
    forl
        17
    forl  
       2016-04-19 10:41:24 +08:00
    关于回调,还是建议用 Promise 吧,已经是 ES6 标准了, NodeJS 也已经原生支持了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   860 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:40 · PVG 04:40 · LAX 13:40 · JFK 16:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.