【发布时间】:2013-08-22 00:18:06
【问题描述】:
如何在这个延迟函数中使用 myValue 以便定义 myQuery?
$.getJSON('lorem.json', function (data) {
var myKey = $("input").val();
var myValue = data[myKey];
}).then(function () {
var myQuery = "http://example.com?q=" + myValue ;
$.getJSON(myQuery, function (info) {
console.log(info);
...
【问题讨论】:
-
尝试将其全局化,而不是
var myValue = data[myKey];使用window.myValue = data[myKey];然后将其与myQuery一起使用,例如var myQuery = "http://example.com?q=" + window.myValue ; -
不能只用一个回调函数吗?为什么需要将函数一分为二?
-
@MaveRick 全局变量太过分了,只有在另一个脚本文件中的某个时间您想将相同的全局变量用于不同的目的时才会导致问题。您可以将
myValue移动到$.getJSONcall 的包含范围,这样两个回调函数都可以访问它。如果包含的作用域不是全局作用域而是另一个函数作用域,它不会污染全局作用域,也不会引起命名冲突。无论哪种方式,似乎 OP 想要做一些更简单的事情,为此可能有一个更简单的解决方案。 -
如何使变量
myValue可以被第二个函数读取而不使其成为全局变量? -
@MattiasBuelens 所说的,我同意,没有理由推迟函数,成功时的常规回调函数足以处理 OP 在他的代码示例中所做的事情。
标签: jquery getjson jquery-deferred