为了更加方便的处理异步操作问题,
现在最新的前端框架生态都开始用上了Generator和yield,
有的甚至已经开始使用最新的async、await语法了,
这两样都是基于Generator自动执行的原理。
这里就简单理解下Generator自执行及async、await语法原理:
一、thunk函数
thunk函数指的是能将执行结果传入回调函数,并将该回调函数返回的函数。
是不是有点抽象,举个例子:
var readFile = function (fileName) {
return function (callback) {
return fs.readFile(fileName, callback)
}
}
下面我们来看下thunk函数怎样执行
readFile('./package.json')((err, str) => {
console.log(str.toString())
})
问: thunk的执行比普通函数要麻烦不少,那么它有什么优势呢?
thunk函数的优势在于它能将异步操作返回结果的获取权交给thunk函数的返回值,
而不是将异步操作结果传入thunk函数本身的作用域内,这点很重要,
因为它能结合Generator语法让Generator函数自动执行
二、Generator
es6的Generator函数,具体语法这里就不介绍了,
我们来编写一个基于thunk函数的Generator: