队列模式的功能编程方法

时间:2016-07-29 02:18:55

标签: javascript node.js design-patterns functional-programming f#-3.0

是否可以根据Functional Programming的原则实施处理异步操作的队列?它基本上是AsyncQueue。

var list = [];
var inProgress = false;

function Queue() {}

Queue.prototype.enqueue = function(data) {
    list.push(data);
    if(!inProgress) {
         inProgress = true;
         start(list.shift());
    }
}

function start(data) {
    // initiate some async activity, and call dequeue on completion
}

function dequeue() {
    if(list.length) {
       start(list.shift());
    } else {
       isProgress = false;
    }
}

显然,有listinProgress的某种状态被管理,不知道如何将其转换为等效的功能编程。 F#代码也欢迎。

基于Javascript Promise的方法也受到欢迎。注意:列表不是固定大小,项目随机动态推送到内部。

0 个答案:

没有答案