【发布时间】:2014-03-29 15:15:19
【问题描述】:
我试图通过这样做来消除“DOOM 的回调金字塔”:
$$( //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]();
}
【问题讨论】:
-
你只想按顺序执行几个函数?你可以用你想要的函数做一个数组,让一个函数执行数组中的第一个函数,然后删除它
-
是的,但我想要它,以便函数本身执行下一个函数。见代码块#1
-
另外,考虑学习 Promise 而不是滚动你自己的异步抽象 :)
-
另外,你有一个隐式全局。