zoukankan      html  css  js  c++  java
  • continuous-local-storage 介绍

    简介

    最近面试被问到知不知道 continuous-local-storage,特此查一查。

    官方文档参见 github

    本地连续存储的工作方式与线程编程中的本地线程存储类似,但是基于 Node 风格的回调链而不是线程。

    可为函数调用链设置和获取你想要的值

    例子

    设编写一个模块,获取数据和渲染是两个不相干的函数,首先在获取用户数据的过程中 set

    // setup.js
    
    var createNamespace = require('continuation-local-storage').createNamespace;
    var session = createNamespace('my session');
    
    var db = require('./lib/db.js');
    
    function start(options, next) {
      db.fetchUserById(options.id, function (error, user) {
        if (error) return next(error);
    
        session.set('user', user);
    
        next();
      });
    }
    

    然后在渲染过程中其他方法里,可以获取之前 set 的值。

    // send_response.js
    
    var getNamespace = require('continuation-local-storage').getNamespace;
    var session = getNamespace('my session');
    
    var render = require('./lib/render.js')
    
    function finish(response) {
      var user = session.get('user');
      render({user: user}).pipe(response);
    }
    

    在此线程内的其他函数里都可以去 get 拿到这个值。这可以解决在跨诸多函数时,数据可以获取同一份的问题,而非在往全局对象 Global 上挂载。

  • 相关阅读:
    SpringCloud Gateway使用实例
    Nacos服务注册与发现
    HashMap源码分析——put方法
    Volatile关键字——内存可见性
    Java的JIT编译器
    why spring?
    mysql 锁
    sql server 表变量和临时表
    mysql 存储过程
    mysql 截取字符串
  • 原文地址:https://www.cnblogs.com/everlose/p/12838075.html
Copyright © 2011-2022 走看看