如何在他的函数之外调用局部作用域变量[duplicate]

问题描述 投票:0回答:1
嗨,我有这个代码ajax,我想获取var respon,但是我不能在他的函数之外进行操作。

$.ajax(settings).done(function(response) { respon = []; respon[0] = response; respon[1] = respon[0].data.translations[0].translatedText; }); console.log(respon); // is not defined

jquery
1个回答
0
投票
这是因为ajax是异步调用,这意味着response可用之前需要花费一些时间。以同步的顺序会发生这种情况:

    $.ajax(settings)被呼叫
  1. [console.log(response)被调用并且尚不可用=>未定义
  2. [response完成后可用
  • 您可以将console.log()包装在外部作用域函数中并从done()函数进行调用

    $.ajax(settings).done(function(response) { myCallback(response); }); function myCallback(data){ window.respon = []; // var respon = []; window.respon[0] = data; window.respon[1] = data[0].data.translations[0].translatedText; console.log(window.respon); }

    现在我已经明确指出,responwindow对象的一部分,因为您没有声明它。这不是“真正的”必要,而是发生的事情。如果您在其他任何地方都不需要它,则应声明它并将其保留在范围内=>根据您打算使用它的用途,请使用varletconst
  • © www.soinside.com 2019 - 2024. All rights reserved.