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专家,请为错误道歉
答案 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