承诺循环

时间:2017-10-13 10:40:50

标签: javascript promise es6-promise

function reduce(functn, intialPromise) {
    var proceed = true;
    var promise = intialPromise;
    do {
        functn(promise).then(next => {
            proceed = next.proceed;
            promise = next.promise;
        });
    } while(proceed);
    return promise;
}

工作人员职能

let promiseFunction = (promise) => {
    let proceed = true;
    return promise.then(() => {

        // some processing in which proceed can become false

        let nextPromise = {};
        if(proceed){
            nextPromise.proceed = true;
            nextPromise.promise = next promise task;
        }
        else {
            nextPromise.proceed = false;
            nextPromise.promise = Promise.resolve(true);
        }
        return Promise.resolve(nextPromise);
    });
};

执行

reduce(promiseFunction, initialPromise).then(() => {
    return success;
});

此代码不断循环。

这个想法是为了拥有链条的承诺。承诺所起作用的数据大概是1 GB。但为承诺处理分配的内存很低 - 100 MB。因此,承诺必须在连锁中运行 - 采用适合记忆的小批量。

目前还与ES6代码绑定,并且尚未添加polyfills / transpiling。因此期待ES6代码的结果。

PS:不是javascript专家,请为错误道歉

2 个答案:

答案 0 :(得分:0)

快速浏览一下:

在任何时候你都没有设置"继续"到" false",所以它会继续循环你的做法。

答案 1 :(得分:0)

问题是HEAD是同步的(如果我是对的)。 看看JavaScript ES6 promise for loop

使用 { switch($role) { case 'admin' : header( "Location: index1.php"); break; case 'user' : header( "Location: index2.php"); break; } } 它应该有效

do-while