首页 > 其他 > 详细

continuous-local-storage 介绍

时间:2020-05-06 20:16:55      阅读:98      评论:0      收藏:0      [点我收藏+]

简介

最近面试被问到知不知道 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 上挂载。

continuous-local-storage 介绍

原文:https://www.cnblogs.com/everlose/p/12838075.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!