ES6 Generator代码如何组织最优雅?
用到了TJ大神的co模块
写法一
const backend = {
fetchData(){
return $.ajax({
type: 'GET',
url: '/react/data.json',
dataType: 'json'
});
}
};
class App {
props = {
name: 'xxx'
}
constructor() {
this.fetch();
}
fetch() {
co(function* () {
var res = yield backend.fetchData();
console.log(res);
}.bind(this))
.catch(function (err) {
console.log(err);
});
}
}
new App();
调用的时候很简单,但是fetch方法里写的就不够优雅,同步过程看得不明显
写法二
const backend = {
fetchData(){
return $.ajax({
type: 'GET',
url: '/react/data.json',
dataType: 'json'
});
}
};
class App {
props = {
name: 'xxx'
}
constructor() {
co(this.fetch.bind(this))
.catch(function (err) {
console.log(err);
});
}
*fetch() {
var res = yield backend.fetchData();
console.log(res);
}
}
new App();
fetch方法里一目了然,看起来像真的同步,但是调用看起来一坨翔
写法三
const backend = {
fetchData(){
return $.ajax({
type: 'GET',
url: '/react/data.json',
dataType: 'json'
});
}
};
class App {
props = {
name: 'xxx'
}
constructor() {
co(this.fetch.bind(this))
}
*fetch() {
try {
var res = yield backend.fetchData();
console.log(res);
} catch (err) {
console.log(err);
}
}
}
new App();
不用co的catch,看起来舒服点,但是co文档没教我们这样写啊
哪位大神指点下,有没有更优雅的写法?跪求
6 回复