有兴趣准备学 node.js,最担心的是多线程和回调地狱 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yamada
V2EX    Node.js

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

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

    你们是用哪些第三方库来处理这 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     Solana     908 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 19:51 PVG 03:51 LAX 11:51 JFK 14:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86