Javascript 我需要使用承诺还是有更好的方法?

Javascript 我需要使用承诺还是有更好的方法?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我遇到了一个问题,我需要使用从Ajax代码返回的数据,它在变量返回之前抓取变量,因此我认为我必须使用承诺或回调。我看了各种各样的关于承诺的文档和教程,都很混乱。我只是通过一个ajax调用返回一个int。我觉得应该很简单 以下是我的JS/JQuery: $('.products').on('click', '.btnaddtocart', function (e) { var itemid = $(this).attr('name'); var qty = $(th

我遇到了一个问题,我需要使用从Ajax代码返回的数据,它在变量返回之前抓取变量,因此我认为我必须使用承诺或回调。我看了各种各样的关于承诺的文档和教程,都很混乱。我只是通过一个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之后获得输出。

这是正确的,您只需放入
console.log(“cart中的数量:+qtyInCart”)
和所有在成功函数中使用qtyInCar的代码

你不需要使用承诺。但是,由于这是一个异步调用,并且您不知道何时将分配
qtyInCart
,因此必须将涉及此变量的所有代码放入
success
函数中