生成器对异步问题进行处理
生成器(generator的应用)
在上一篇博客上,我写了对数组的扩展、迭代器与生成器的介绍和使用场景,今天我分享一下对生成器处理异步问题的方法
第一个:回调地狱问题
何为回调地狱呢?如果接触过jquery ajax的朋友,一定知道通过用$.get或者$.post的方法获得请求时,请求到的结果在success中,就像这样:
$(function(){
$.ajax({
method: "get",
url: "你数据的网址",
success(res){
console.log(res) //res就是你获取到的数据
//但是我还想继续获取数据,就得再在里面再进行ajax请求
$.ajax({
// 再进行一起请求
});
}
})
})
像上面这种ajax里面再套用ajax的方法,一个是扩展性不好,一个就是可读性太差了,写着写着就乱套了,这种问题就叫做回调地狱问题。
处理这种问题,可以用到生成器的方法来解决。
$(function(){
//1.先生成一个生成器 叫做main()
function* main(){
//切记这里的arr不是yield requestData('输入一个数据源的网址')返回的值
//而是在requestData函数里next()的赋值
let arr = yield requestData('http://wthrcdn.etouch.cn/weather_mini?citykey=101010100');
console.log(arr);
}
//2.生成一个迭代器