美文网首页
Node.js异步机制造成的坑

Node.js异步机制造成的坑

作者: 汨罗在北方 | 来源:发表于2017-10-16 15:58 被阅读67次

Node.js所有程序都是异步执行的,导致程序执行的过程中可能会有一些坑的存在。

比如如下一段代码:

flag = init_mongodb(jsonconfig);
if (flag != NOERROR) {
      console.log(flag);
      mylogger.logWarn("Database connect error!");
      process.exit();
}

此段代码中init_mongodb()函数初始化了mongodb,链接成功后返回一个返回值,用于下面的判断,要不对的话就弹出程序。

但这里就遇到一个问题:Node.js的机制是异步的,在执行到if一句时flag还是undefined状态。

所以此处就涉及到了怎么实现回调的问题了。知乎大神是这样解释的:

js 本来就是异步的,要不是callback,要不是 Promise,没法同步写代码

异步函数按顺序执行是老问题了,有各种各样的方法,Callback就跳过不说了。

作者:yjcxy12 链接:https://www.zhihu.com/question/39711453/answer/91885082来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后这个问题我把回调加到了函数callback里了事。但详细研究还是应该用更好的方法。
然后,我找到了(2017,我们来聊聊 Node.js)[https://cnodejs.org/topic/58eee565a92d341e48cfe7fc]这篇文章

文章中写到对于node.js首先需要建立的一个概念就是:
Node.js是为异步而生的,它自己把复杂的事儿做了(高并发,低延时),交给用户的只是有点难用的Callback写法。
所以更好的解决方法是Async函数和Promise

  • Async函数是趋势,Chrome 52. v8 5.1已经支持Async函数(https://github.com/nodejs/CTC/issues/7)了,Node.js 7.0+支持还会远么?
  • Async和Generator函数里都支持promise,所以promise是必须会的。
  • Generator和yield异常强大,不过不会成为主流,所以学会基本用法和promise就好了,没必要所有的都必须会。
  • co作为Generator执行器是不错的,它更好的是当做Promise 包装器,通过Generator支持yieldable,最后返回Promise,是不是有点无耻?

有如下的图:

回调机制

红色代表Promise,是使用最多的,无论async还是generator都可用
蓝色是Generator,过渡货
绿色是Async函数,趋势

相关文章

  • Node.js异步机制造成的坑

    Node.js所有程序都是异步执行的,导致程序执行的过程中可能会有一些坑的存在。 比如如下一段代码: 此段代码中i...

  • Node事件循环

    Node.js 事件循环机制 Node.js 采用事件驱动和异步 I/O 的方式,实现了一个单线程、高并发的 Ja...

  • Node.js 事件机制

    Node.js 事件机制 Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过...

  • Node.js中的异步

    title: Node.js中的异步categories: techtags: 异步 Node.js 前言 写No...

  • 学习node.js+express+mongdb精简理解

    node.js简而言之是运行在服务端上JavaScript。 优点:事件机制,异步,无阻塞的,轻量高效,单进程线程...

  • Node.js的心脏-epoll

    1、Node.js和epoll 我们都知道Node.js是异步的,那么Node.js为什么会是异步的呢?这是因...

  • js中的异步操作

    Node.js 中读取文件 回调函数嵌套造成回调地狱 Promise Promise 是异步编程的一种解决方案,比...

  • Promise异步处理

    一、回调地狱   首先我们知道在JS中异步执行机制具有非常重要的地位,而Node.js中readFile就是一个异...

  • 事件处理机制

    Node.js事件触发对象有哪些方法? 详细讲讲Node.js事件机制是怎样的? Node.js事件机制和Java...

  • 01node.js

    01、模块 02、关注学习 03、Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托...

网友评论

      本文标题:Node.js异步机制造成的坑

      本文链接:https://www.haomeiwen.com/subject/hgokuxtx.html