js中在onload回调事件需要用return的返回值

按照平常理论上这样写一点问题也没问题
但是返回的是undefined
说明onload要等待x资源都加再完成了才能执行

1
2
3
4
5
6
7
8
9
10
11
12
getFileSize(url) {
var x = new XMLHttpRequest();
x.open("GET", url, true);
x.responseType = 'blob';
var fileSize=0
x.onload = () => {
console.log(x.response.size)
fileSize=x.response.size
}
x.send();
return fileSize
}

改进 利用promise的回调

1
2
3
4
5
6
7
8
9
10
11
12
getFileSize(url) {
return new Promise(function (a, b) {
var x = new XMLHttpRequest();
x.open("GET", url, true);
x.responseType = 'blob';
x.onload = () => {
console.log(x.response.size)
a(x)
}
x.send();
})
}

后续所有操作都在这回调里面执行

1
2
3
getFileSize(url).then((res)=>{
“你要操作”
})

js中在onload回调事件需要用return的返回值
http://ultracode.cn/2022/12/13/NewJs/js中在onload回调事件需要用return的返回值/
作者
Win
发布于
2022年12月13日
许可协议