cuốn sách gpt4 ai đã làm

javascript - (仍然)对 javascript 闭包、ajax 和返回值更加困惑

In lại Tác giả: Walker 123 更新时间:2023-11-28 21:00:09 27 4
mua khóa gpt4 Nike

我正在尝试使用 JQuery .get() 方法和 JavaScript for 循环来处理来自外部文件的一些数据。我已经在 stackoverflow 上阅读了有关闭包和回调返回值的内容几个小时,但我仍然很困惑为什么这不起作用。

相对于内部回调函数,变量 headerscountryData 的作用域不是全局的吗?它们在回调函数中按预期分配了值,但是完成后我如何访问它们?可能还有一个不使用alert()函数的例子?

function processData(inCSV){
var headers;
var countryData = [];
$.get(inCSV, function(data) {
var lines = data.split('\r\n');
for(var i=0;i<=lines.length-1;i++){
var lineData = lines[i].split(',');
if(i != 0){
countryData[lineData[1]] = lineData.slice(2,lineData.length);
} khác {
headers = lineData.slice(2,lineData.length);
}
}
console.log('inside',headers); // output 'inside ["1971", "1972", "1973" ...'
console.log('inside',countryData['Brazil']); // output 'inside ["56.4", "54.6", ..'
});
console.log('outside',headers); // output 'outside undefined' ...!?
console.log('inside',countryData['Brazil']); // output 'outside undefined' ...!?
}

câu trả lời hay nhất

问题不在于闭包,问题在于异步函数。 $.get() 连接到服务器,并在服务器返回答案时运行其回调函数。但是 $.get() 在请求发送后完成,而不是在返回响应时完成。因此,最后两行 console.log() 行在执行回调函数之前运行。

只有在回调函数执行后,您才能访问 headerscountryData 变量,并且您知道发生这种情况的唯一位置是回调函数本身内部。或它调用的其他代码。

关于javascript - (仍然)对 javascript 闭包、ajax 和返回值更加困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11248543/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress