Javascript回调函数结果函数触发得太早

时间:2013-06-18 01:55:27

标签: javascript jquery

我创建了一个回调函数来延迟将产品添加到购物车的功能,如下所示。

productAddToCartForm.submit(this)仍然被称为过早。我也试过了promise功能(虽然我不确定它是否适用于此)。

回调函数会附加一个隐藏的输入,其中包含我需要发布的变量。添加到购物车功能在被追加之前被调用。

现在唯一可行的是超时功能,但我不想这样做。

标有1-4 ARE记录的

Console.log。有什么想法吗?

updatePrices(IDs, function () {
    //setInterval(function(){productAddToCartForm.submit(this)},2000);
    console.log("3. finished function and returned");
    $j("input").promise().done(function () {
        console.log("4.Finished! ");
        productAddToCartForm.submit(this);
    });
});

function updatePrices(IDs, callback) {
    console.log("1. entering update Prices function");
    //... A BUNCH OF N/A CODE, ASSUME BASEPRICE 2.50
    if (IDs.length == 1) {
        console.log("2. IDs equals one");
        $j('.priceBlock input').remove();
        $j('.details' + IDs[i] + ' .priceBlock').append('<input type="hidden" name="customPrice" value="' + basePrice + '"/>');
        //return;
    }
    if (callback) {
        callback();
    }
}

1 个答案:

答案 0 :(得分:0)

似乎即使元素已添加到DOM中,表单也不会在调用回调函数时刷新。

你提到你不想使用它,但没有可重复的小提琴,我只能建议setTimeout()

if (callback) {
    setTimeout(callback, 1);
}

这会简单地将控制权移交给浏览器,以便它可以进行一些内部簿记,并且(不幸的是)这是一种经证实可以解决这些问题的方法。