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

Executing a final callback depending on the outcome of multiple callback results

本文关键字:结果 回调 执行      更新时间:2023-09-26

我正在处理一些代码,负责在许多不同的打印机上打印文档。对于每台打印机,调用"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);
            }
        }
    }));
};

除此之外,我还向包装函数传递了两个回调,一个是在任何打印作业成功时调用的,另一个是如果它们都不成功,这就是我正在努力解决的问题。

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

来自 jquery 的 Defferds/promise 与"when"结合使用,进行这样的同步:http://api.jquery.com/jQuery.when/

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