等待函数完成执行,当从循环传递diff调用时。参数

时间:2014-03-01 22:05:42

标签: javascript javascript-events synchronization pagemethods

我从另一个函数调用一个函数

  • 第一个函数(从中调用其他函数)包含一个循环,它将不同的参数值传递给第二个函数
  • 第二个函数包含一个PageMethod调用,其中包含一个OnSuccess和一个OnFailure函数......

如何让脚本等待完成对第二个函数的第一次调用然后执行下一个调用

是否有等待函数完成执行的Javascript?

同步函数调用

2 个答案:

答案 0 :(得分:0)

听起来你正在处理一个异步序列,可能想看看异步库,它可以在客户端或服务器端运行,并且完全解决了我认为的这种事情。

答案 1 :(得分:0)

同步异步函数调用可以通过使用 promises ,提供回调排队向上调用函数来完成。

Promises 易于处理,使您的代码可读,并且在处理异步调用时几乎是推荐的方法。使用promises,您可以使用其中一个库,即Qwhen.js,或者如果您对jQuery更熟悉,则可以使用jQuery.Deferred()

使用回调,让异步函数获取一个在执行主逻辑后执行的函数参数。 E.g

function (param, callbackFn) {
   // primary asynchronous logic
   callbackFn();
}  

回调的缺点是,遵循程序流程可能会非常困难。并且很容易陷入“功能嵌套地狱”。

使用队列可能是其他选项的合适替代方案。这是一个示例队列

var queue = function(funcs, scope) {
    (function next() {
        if(funcs.length > 0) {
            funcs.shift().apply(scope || {}, [next].concat(Array.prototype.slice.call(arguments, 0)));
        }
    })();
};

这将相应地使用

queue([asyncFn1, asyncFn2, asyncFn3]);

有关队列功能的详细说明,请参阅此tutorial