我有一个es6类,有一个init()方法负责获取数据,转换它,然后this.data用新转换的数据更新类的属性.到现在为止还挺好.该类本身有另一种getPostById()方法,只是做它听起来的样子.这是该类的代码:
class Posts {
constructor(url) {
this.ready = false
this.data = {}
this.url = url
}
async init() {
try {
let res = await fetch( this.url )
if (res.ok) {
let data = await res.json()
// Do bunch of transformation stuff here
this.data = data
this.ready = true
return data
}
}
catch (e) {
console.log(e)
}
}
getPostById(id){
return this.data.find( p => p.id === id )
}
}
Run Code Online (Sandbox Code Playgroud)
直截了当,除了我async/await在init() …
使用异步 javascript 时,每秒函数如下所示:
function_name()
{
return new Promise((resolve,reject) => {
// do some async task
resolve();
});
}
Run Code Online (Sandbox Code Playgroud)
即使使用 es6 async/await,我也无法避免“return new Promise((resolve,reject) => { ...”这一部分。
有没有另一种方法可以在没有所有这些重复行的情况下编写这样的代码?
谢谢。