只要做it的难免遇到坑,今天这篇文章来为大家讲述下同异步加载数据的坑!先来说异步吧,说起异步大家最熟悉的是ajax了吧,当你用ajax请求数据时,页面会局部刷新,但是有时候页面虽然刷新了,但是我们还是拿不到我们想要的结果,为啥呢?原因就在异步加载中!看下面的例子
var fs= require('fs');
fs.writeFile(filename,data,[options],callback);
这是node中fs文件输出文件流,默认异步,一般情况下不会有问题,可以在指定路径下创造文件,但是有时候我们需要执行其他命令,例如
var fs= require('fs');
fs.writeFile(filename,data,[options],callback);
callback();
我们在fs.writeFile下面增加了一个callback(),那么我们会在writeFile异步请求完成后,调用callback().。这里有点要注意,异步请求完成,不代表数据已经拿到渲染完成
,有可能在渲染数据的时候,执行callback(),导致得不到自己想要的结果!
下面给出解决方案,改成同步,
var fs= require('fs');
fs.writeFileSync(filename,data,[options],callback);
callback();
同步会在执行完writeFileSync后,才执行callback(),注意这里的执行完是指拿到数据,并且执行完writeFileSync自身回调函数,完成文件的输出写入工作,
再执行callback(),完美的解决了上文中出现的加载不及时导致的问题!同异步的妙用还有很多,有兴趣的童鞋可以自己去研究下!