参考文档 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Generator
语法:
生成器对象是由generator function 生成的,符合迭代器协议以及可迭代协议
常用的方法:
g.next() 返回生成器对象的下一个元素, value 值 done 为bool true的时候代表已经迭代结束了
g.return() 执行返回的数据,并且结束迭代
备注:
a. 定义的方式不同 function* (多了个*)
b. 和函数的区别是可以多次返回
c. 生成器的关键字是 yield
d. 对于ajax的多个回调 作用明显
实例:
ajax('http://url-1', data1, function (err, result) { if (err) { return handle(err); } ajax('http://url-2', data2, function (err, result) { if (err) { return handle(err); } ajax('http://url-3', data3, function (err, result) { if (err) { return handle(err); } return success(result); }); }); }); try { r1 = yield ajax('http://url-1', data1); r2 = yield ajax('http://url-2', data2); r3 = yield ajax('http://url-3', data3); success(r3); } catch (err) { handle(err); }