1

有谁知道一些好的资源/书籍,我可以在其中找到如何处理多个异步请求?

让我们考虑下面的代码:

Payment.createToken = function(data) {
    var data = data;

    apiCall("POST", "api/createToken", data, function(success, response) {
        if (success) {
            data.token = response.id;

            // If there's coupon code passed in data object, check it's validity, else send payment request
            if (data.coupon) {
                // Check if coupon is valid
                Payment.verifyCoupon(data);
            } else {
                // Send payment request
                Payment.chargePlan(data);
            }
        } else {
            // Handle error
        }
    });
};

Payment.verifyCoupon = function(data) {
    var data = data;

    apiCall("POST", "/api/checkCoupon", data, function(success, response) {
        if (success) {
            Payment.chargePlan(data);
        } else {
            // Handle error
        }
    });
};

Payment.chargePlan = function(data) {
    apiCall("POST", "/api/chargePlan", data, function(success, response) {
        if (success) {
            Payment.changeUserType(data);
        } else {
            // Handle error
        }
    });
};

Payment.changeUserType = function(data, response) {
    apiCall("PUT", "api/users/", data, function(success, response) {
        if (success) {
            // User type changed successfully
        } else {
            // Handle error
        }
    });
};

如您所见,它很长,有 4 个步骤流程。我应该如何正确处理错误等?让我们考虑到这些调用应该尽可能地可重用。

4

2 回答 2

0

在这种情况下,我通常会创建一个异步操作队列来连续执行和运行它们,只有在前一个成功时才调用下一个,如果没有,则直接调用最终回调,并将错误作为第一个参数。

于 2013-01-20T21:38:29.793 回答
0

我已经成功地使用了这个库。它有助于减少混乱,并让您可以选择按顺序或同时运行各种进程(跟踪所有进程的实际完成时间)。

如果您需要知道是否出现问题,它会引用可选的错误处理回调。

我意识到这不是您正在寻找的确切答案,但它仍然可能会有所帮助。

于 2013-01-20T21:21:29.733 回答