gpt4 book ai didi

javascript - Javascript 的奇怪行为

转载 作者:行者123 更新时间:2023-12-03 05:31:01 25 4
gpt4 key购买 nike

我有以下 Java 脚本代码片段:

function upoload_TC(evt) {
var file = evt.target.files[0];
if(file.type != 'text/plain'){
evt.target.style='color:red;';
}
else{
var app_data='';
reader = new FileReader();
reader.onload = function(){
app_data = reader.result;
};
reader.readAsText(file);

if (evt.target.id[7]=='2') {
/* area of intrest begin: */
var packet_order = get_packet_order(evt.target);
console.log("1st");
var app_data1 = app_data.split('\n');
console.log("app_data: ");
console.log(app_data);
console.log("app_data1: ");
console.log(app_data1);
/* area of intrest end */
for(var i=0; i<app_data1.length; ++i){
console.log("3st");
if(app_data1[i][0] == '!'){
app_data1.splice(i,1);
--i;
console.log(app_data1);
}
console.log(app_data);
...
}
}
}
}

app_data 有一个很长的字符串。

执行后,有时app_data1没有记录任何内容。
观察:当我在调试器中逐步执行它时,app_data1 具有预期值。但是,如果我的第一个断点位于 app_data1 的赋值语句之后,则它是空的。

我该如何解决这个问题?

我找到了一个call_backpromises来解决用户定义函数的此类问题。由于 split() 不是我定义的,我认为这些不起作用。
我相信 timeout 不是执行此操作的正确方法。是吗?

请查看调试器窗口的视频here .

最佳答案

您应该在 onload 回调中进行日志记录/处理。在示例代码中,您在 load 事件上设置 app_data 的值,该事件在异步函数 readAsText 完成其操作后触发。到那时,记录/处理代码已经被执行。

关于javascript - Javascript 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40943981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com