之后如何在异步函数上调用后如何获取异步函数的返回值

祖内

承诺似乎很直截了当。但是,每次我遇到它时,我都必须执行变通办法,而实际上我只希望一个函数被同步执行。

我想知道我是否由于某种原因错过了正确执行的方法,因为它看起来是如此明显。

想象以下代码

getData()
.then(data => {
  const dates = [];
  generateDates(30, new Date(), dates)
  .then(result => {
    console.log(result)
  })
})

在dates数组完成填充之前,将对generateDates()的承诺进行解析,因此console.log()返回undefined。

为什么在函数返回之前在generateDates()上调用then()?只有在dates数组完全填充后,该函数才应返回。这样对我来说,承诺是没有意义的。

const generateDates = async(n, date, dates) => {
  if (n === 0) {
    return dates;
  }
  dates.push(date);
  n--;
  date = date - (30 * 24 * 60 * 60 * 1000)
  generateDates(n, date, dates);
}
urchmaney

问题不是在日期完成填充之前已解决了generateDates,这是因为未返回递归调用。

 const getData = async() => {};

 const generateDates = async(n, date, dates) => {
      if (n === 0) {
        return dates;
      }
      dates.push(date);
      n--;
      date = date - (30 * 24 * 60 * 60 * 1000)
      return generateDates(n, date, dates);
    }

    const dates = [];
    getData().then(data => {
      const dates = [];
       generateDates(2, new Date(), dates).then(result =>        console.log(result))

    })
   

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章