1
我试图这样做是为了消除“DOOM的回调金字塔”:JS为了执行功能,同时通过下一个函数作为参数
$$(//my function
function(next) { // <- next is the next function
setTimeout(next,1000); // simple async function
},
function(next){ // this function is the previous's function "next" argument
waitForSomethingAndReturnAValue(next, "I am a parameter!");
},
function(aValue){
console.log("My value is:" + aValue);
}
);
但我一直在摆弄了约一个小时,和我的代码不起作用,有帮助吗?这是我走到这一步:
function $$(){
for (a in arguments){
arguments[a] = function(){
arguments[a](arguments[Math.max(-1, Math.min(a+1, arguments.length-1))]);
};
}
arguments[0]();
}
?你可以用你想要的函数做一个数组,并使一个函数执行数组中的第一个函数,然后删除它 – juvian
是的,但我需要它,所以函数本身执行下一个函数。看到代码块#1 – Wazzaps
可能重复的[JavaScript中的信号量队列?](http://stackoverflow.com/questions/17528749/semaphore-like-queue-in-javascript) –