javascript - 词法作用域变量在 getJSON 调用中被覆盖后保留值

标签 javascript jquery variables getjson lexical

在本文末尾的代码中,变量 pPrice 是通过以下方式定义的 $(addProduct).attr(attrProductPrice); 然后通过 JSON 调用进行设置 $.getJSON(url, function(data) { console.log(data); pPrice = data.price; }); 但在同步 .getJSON 调用之后,该值已返回其原始值。

如何通过 .getJSON 调用覆盖词法作用域变量的定义?源代码相关部分缩写为:

  function addToCart(i,qty){
     var pPrice = $(addProduct).attr(attrProductPrice); //original value
     var url = '/pricefor/' + pId;
     $.getJSON(url, function(data) { console.log(data); pPrice = data.price; }); // new value
     console.log(pPrice); // new value lost! back to original value?!        
  }

最佳答案

getJSON 调用是异步的。在从服务器检索 JSON 之前,不会调用您的函数。时间线如下所示:

var pPrice = $(addProduct).attr(attrProductPrice);
var url = '/pricefor/' + pId;
$.getJSON(url, blah blah);
console.log(pPrice);

# some time later, when the server responds, your function is called.
console.log(data); pPrice = data.price;

关于javascript - 词法作用域变量在 getJSON 调用中被覆盖后保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476355/

相关文章:

javascript - Angular ui.grid。在两个网格之间移动行

javascript - 如何使用 Jquery 拆分多个字符串

javascript - 将分页点和文本标题添加到小型 jQuery 轮播

来自数组值的 Javascript 动态变量名称 (Appcelerator Titanium)

c++ - 类函数更改类cpp中的其他数据

javascript - 从数组创建对象,像数组内部一样严格排序

javascript - 计算图形的相对点坐标?

jquery - 更改 Jquery Plguin、JQGrid 中的 AJAX url?

javascript - 使用 JavaScript 进行多个左手赋值

javascript - Bootstrap 嵌套折叠仅在父折叠时发生事件