此前只是简单使用而没有真正的去研究 Generator,这次要好好折腾下这货。
异步编程
对于 jser 来说,异步非常熟悉了吧,但是真正理解异步的却不多,因为大部分人只知道回调。
随着js的快速发展,异步方案也层出不穷,从最开始的回调到Promise,再到Generator,然后到async/await。
甚至有人说 async/await 是异步的终极解决方案,我不敢直接赞同,只能说是目前最好的异步体验。
本篇先从 Generator 讲起,后序再详细说 async/await。
从回调开始
从最最经典的 ajax 请求开始今天的话题吧。
假如,我们要依次请求 url1, url2, url3 这3个地址。
$.get('url1', function(r1) {
$.get('url2', function(r2) {
$.get('url3', function(r3) {
console.log(r1, r2, r3);
});
});
});
一不小心就写成这样了。
如果你是 jQuery 粉的话,你可能会说也可以这样实现啊。
$.get('url1').then(function(r1) {
console.log(r1);
return $.get('url2');
}).then(function(r2) {
console.log(r2);