nodejs里有没有可以存储callback函数的缓冲队列?
发布于 8 年前 作者 Eeylx 4085 次浏览 来自 问答

nodejs里有没有可以存储callback函数的缓冲队列? 现在是想把收到的请求的参数连同callback函数一起存储在一个队列中, 一次从队列里取出20个进行处理(调用的api一次处理20个参数), 然后再根据结果分别调用那20个callback函数. 不知道有没有现成的工具或者方法?

7 回复

如果你说的是任务队列的话,试试看这个 [kue][https://github.com/Automattic/kue]

var arr = [];
const callback = function(){
	let key = this.key;
	console.log(key);
};
arr.push(callback.bind({key:value}))

希望对你有用.

@danielsss 多谢回答, 我也用过这种方法, 但是这种方法是不是相当于把数组存在内存中? 如果想用cluster模式利用多核cpu的话, 因为node的进程与进程之间是不能直接共享内存的, 会导致数组跟数组之前也是分离的, 可能20个请求发过去, 4个进程每个里面只有5个请求, 这种怎么解决…

@gfafei 多谢回答, 我去学习一下~

讲到缓冲函数,只能联想到函数式编程里的compose了 Haskell里

λ> ((/2) . (+1)) 3
λ> 2.0

换成js就是

let {curry} = require('lodash');
let {compose} = require('rambda');

let add = curry((n, d) => d + n),
	div = curry((n, d) => d / n);
let fns = compose(div(2), add(1));
console.log(fns(3));	// 2

@Eeylx 你每个进程处理每个进程的callback啊 ! 根本就不互相干扰啊… 除非你这些请求要有序处理

回到顶部