我需要使用Promises还是有更好的方法?

时间:2017-03-28 19:07:14

标签: javascript jquery ajax

我遇到了一个问题,我需要使用从Ajax代码中获取的数据,它在返回之前抓取变量,所以我认为我必须使用Promises或回调。我看了各种关于Promises的文档和教程,这一切都让人非常困惑。我只是通过一次ajax调用发回一个int。我认为这应该很简单。

这是我的JS / JQuery:

$('.products').on('click', '.btnaddtocart', function (e) {
        var itemid = $(this).attr('name');
        var qty = $(this).prev('input').val();
        var qtyAvailable = $("#qty" + itemid).html();
        var qtyInCart = 0;
        $.ajax({
            url: '/Shop/getItemCountInCart',
            data: { id: itemid },
            success: function (result) {
                qtyInCart = result;
                console.log("result: " + result);
            }
        });
        console.log("qty in cart: " + qtyInCart);

qtyInCart始终为0且结果具有数字,但在qtyInCart之后输出。

1 个答案:

答案 0 :(得分:1)

这是正确的,你只需要在成功函数中使用qtyInCar放置console.log("qty in cart: " + qtyInCart);和所有代码。

您不需要使用Promises。但是,由于它是异步调用而您不知道何时将分配qtyInCart,因此您必须将涉及此变量的所有代码放在success函数中。