相关疑难解决方法(0)

异步函数没有返回值,但是console.log()确实:怎么办?

我有一个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/awaitinit() …

javascript async-await ecmascript-6

7
推荐指数
1
解决办法
9940
查看次数

javascript return new Promise:简短的语法

使用异步 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) => { ...”这一部分。

有没有另一种方法可以在没有所有这些重复行的情况下编写这样的代码?

谢谢。

javascript es6-promise

6
推荐指数
1
解决办法
1万
查看次数