更改递归。然后更改为async / await

时间:2017-06-07 09:49:28

标签: javascript promise async-await ecmascript-next

我有像这样的js递归fn

const recur = () => {
  fetchSomething().then( res => {
    if(typeof res.data == 'undefined'){ recur() }
    else { console.log(res.data) }
  })
}
recur()

我可以将上面的代码应用于Async / Await样式吗?

1 个答案:

答案 0 :(得分:1)

torazaburorobertklep两者都合理地建议使用一段时间来实现此目的。我会在这里添加评论,这样他们就不会错过,因为他们会提出好点。

  

恕我直言,非递归解决方案应该是首选解决方案。 promises和then类型的本质需要伪递归解决方案,但await的一大优势是它允许我们以类似同步的方式编写异步代码。

const recur = async () => {
    const res = await fetchSomething();

    if (!res.data)
        recur();
    else
        console.log(res.data);
}

这样的事情应该可以解决问题。

Demo