我需要给pipe()处理函数提供一堆函数名,以便它可以按顺序执行它们,并等待每个函数的完成。当这些函数不需要参数传递时,这很好,但是当需要参数时,我无法弄清楚如何在没有函数继续调用并调用自身的情况下传递它们(由括号引起)。

例如,这是我通常通过的:
pipeHandler([function1, function2]);
然后它会在 promise 完成之前调用 function1()function2()

当我想做这样的事情时,它变得困难:
pipeHandler([function1('value'), function2]);
这导致function1()立即调用,完全绕过了promise机制。

如果有帮助,这是处理程序函数:

function pipeHandler(requiredFunctions) {
    //Execute first required function
    var executeFunctions = requiredFunctions[0]();

    //Execute each subsequent required function using pipe()
    for ( var index = 1; index < requiredFunctions.length; index++ ) {
        executeFunctions = executeFunctions.pipe(requiredFunctions[index]);
    }

    //Execute allDone() using pipe()
    executeFunctions = executeFunctions.pipe(allDone);
}

希望有人有想法!

最佳答案

为什么不

pipeHandler([function() { function1('value'); }, function2]);

?

这就是匿名函数闪耀的地方。如果您花一些时间在 Javascript 中工作,那么在某些时候使用 setTimeOut 时您可能会遇到同样的问题。

关于javascript - 您可以将参数传递给函数而不立即调用它吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21550502/

10-12 12:46
查看更多