根据多个回调结果的结果执行最终回调

时间:2013-10-17 20:37:09

标签: javascript callback closures

我正在研究一些负责在多台不同打印机上打印文档的代码。对于每个打印机,调用'sendToPrinter'并传递文档,打印机对象和打印机用于回调成功或失败的对象。根据打印机类型,回调是同步/异步执行的,这是我到目前为止的简化版本。

var x = 0;
var printDocument = function(document, printers) {
    sendToPrinter(document, printers[x], ({
        success: function() {
            x±+;
            if (x < printers.length) {
                printDocument(document, printers);
            }
        },
        failure: function() {
            x++;
            if (x < printers.length) {
                printDocument(document, printers);
            }
        }
    }));
};

除此之外,我还有两个回调函数传递给包装函数,一个是在任何打印作业成功时被调用的,另一个是如果它们都没有被调用,这就是我正在努力的。

如何最好地跟踪各种打印作业的结果,以便在完成后我可以执行正确的回调?

1 个答案:

答案 0 :(得分:1)

来自jquery的defferds / promises与'when'结合使用此类同步:http://api.jquery.com/jQuery.when/

还有一些非jquery解决方案可以实现类似的解决方案。