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:21:29.733 に答える
0

そのような場合、私は通常、非同期操作のキューを作成して一連の操作を実行し、前の操作が成功した場合にのみ次の操作を呼び出し、そうでない場合は、最初の引数としてエラーを使用して最後のコールバックを直接呼び出します。

于 2013-01-20T21:38:29.793 に答える