JavaScript callBack获得两次 - 应该只运行一次?

时间:2015-06-01 05:43:22

标签: javascript

首先我要澄清一下,我已经在2个多小时内搜索了我的答案解决方案,似乎无法找到解决方案。

我有一个函数addProductCheck();

此项功能在项目点击时调用,似乎没有任何困难。运行带回调的下一个函数时会出现问题。

cartProductExists(objectVars, function(cartItem) {

}

这是为了对我的数据库运行异步调用,检查购物车表中的项目,然后返回带有结果的回调以进行进一步操作。

cartProductExists(objectVars, function(cartItem) {

    if (cartItem != null) {
    //Ran after callback returns as cartItem is no longer null
    }else{
    //Gets ran the first time cartProductsExists is called, when it shouldn't.
    }

}

我不知道我在哪里出错了,据我所知,回调中的其余代码甚至不应该运行直到回调触发响应。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

我的印象是在我的cartProductExists()函数中,我需要在最后一行放置一个callBack(),因为我的查询只会在找到我正在寻找的对象的情况下进行回调对于。我原以为在最后有一个会返回一个空回调来继续这个过程。

显然正在发生的事情是,当我的异步事件正在等待时,它仍然继续到我的代码结束并触发第二个callBack(),但在我的异步任务完成之前。

答案 1 :(得分:0)

if (cartItem == null || cartItem == "") {
    //Ran after callback returns as cartItem is no longer null
} else {
    //Gets ran the first time cartProductsExists is called, when it shouldn't.
}
你可以这样试试吗?