制作推广网站,重庆网站建设总结,企业网站模板下载哪家公司强,c2c平台怎么下载#xff08;一#xff09;问题描述 你可能会遇到这样的情况#xff1a;在fetch之外创建变量#xff0c;将fetch获取到的数据赋值给这个变量以便在fetch外使用#xff0c;但在使用这个变量的时候发现值是空的#xff0c;这是为什么呢#xff1f;
#xff08;二#xf…一问题描述 你可能会遇到这样的情况在fetch之外创建变量将fetch获取到的数据赋值给这个变量以便在fetch外使用但在使用这个变量的时候发现值是空的这是为什么呢
二同步和异步
原因很简单fetch是异步的。
那么什么是同步什么是异步呢简单来说同步和异步中任务执行的顺序不同同步是指任务按顺序执行一个任务完成后再开始下一个任务异步是指任务可以独立执行一个任务不需要等待另一个任务完成可以通过回调、事件或通知来获取结果。
对于这段代码
let obj[]//定义objfetch(XXX)//利用fetch获取数据.then((res) res.text()).then((data) {......console.log(获取数据);obj.push(XXX);//为obj赋值......}
console.log(写在获取数据之后的代码)
假设fetch是同步的那么执行的顺序就是定义obj-获取数据并放入obj-在fetch外使用obj控制台输出的顺序就是获取数据”-写在获取数据之后的代码“。但实际是fetch是异步的fetch内的代码段可以独立执行整个代码执行的顺序是1定义obj-在fetch外使用obj2fetch获取数据二者同步进行那么fetch外使用obj时数据获取和obj的赋值还没有完成实际控制台输出的顺序是”写在获取数据之后的代码“-获取数据” 三 解决办法
1. 使用async和await来确保在使用变量之前数据已经被获取
2. 将需要使用数据的代码放入fetch的回调函数内部或者在数据获取完成后的回调中也就是.then()中