当库使用回调时,ES6生成器的简单收益

时间:2016-03-10 03:07:32

标签: javascript ecmascript-6 generator

考虑使用异步请求的这个生成器(即:superagent):

static * findOne (model, id) {
  const url = [this.host, model].join('/')
  let res
  yield request
    .get(url)
    .end((err, resp) => {
      res = resp
    })
  return res
}

这感觉非常笨拙......设置res,然后在异步操作后更新其值。是否有更清洁,更严格的方法来做到这一点?

我知道我可以使用一个承诺并产生它...但似乎没有增加价值,只意味着我有更多的代码并嵌套在promises函数参数中

我知道我最终无法屈服()可链接......

向建议开放......

1 个答案:

答案 0 :(得分:0)

对于那些发现这个问题的人来说,看起来你可以这样做:

  static * findMany (model, query) {
    const url = ['http://localhost:3333', model].join('/')
    yield request
      .get(url)
      .end()
  }

...作为superagent支持已经产生并返回响应对象